root/BH13SPARQLBuilder/src/hozo/sparql/gui/SparqlBuilderPanel.java @ 111

リビジョン 111, 14.0 KB (コミッタ: atsuko, 10 年 前)

GUIからの呼び出し用の QueryPathGenerator? コンストラクタ追加

  • 属性 svn:mime-type の設定値 text/plain
Rev行番号 
[17]1package hozo.sparql.gui;
[9]2
3import hozo.maptool.MapFactory;
4
5import java.awt.BorderLayout;
6import java.awt.GridLayout;
7import java.awt.event.ActionEvent;
8import java.awt.event.ActionListener;
9import java.util.List;
10
11import javax.swing.*;
12
[17]13import hozo.sparql.EndpointSettingsManager;
14import hozo.sparql.SparqlQueryListener;
[9]15
[84]16import org.biohackathon.SPARQLBuilder.OWL.*;
17
18/*
[9]19import org.biohackathon.SPARQLBuilder.OWL.ClassLink;
20import org.biohackathon.SPARQLBuilder.OWL.Direction;
21import org.biohackathon.SPARQLBuilder.OWL.Instance;
22import org.biohackathon.SPARQLBuilder.OWL.OWLQueryBuilder;
23import org.biohackathon.SPARQLBuilder.OWL.OWLQueryBuilderImpl;
24import org.biohackathon.SPARQLBuilder.OWL.Path;
[24]25import org.biohackathon.SPARQLBuilder.OWL.SClass;
[84]26*/
[9]27
28
29public class SparqlBuilderPanel extends JPanel{
30       
31        JTextField jtf_start_class;
32        JTextField jtf_end_class;
[33]33        JTextField jtf_mode;
34        JCheckBox jcb_count_ins;
35       
[9]36        JTextArea jta_query;
37        MapFactory map;
38        SparqlSearchPanel search_panel;
[84]39        //OWLQueryBuilderImpl builder;
40        QueryPathGenerator generator;
[111]41       
[9]42
43//      public SparqlBuilderPanel(SparqlAccessorForm parent) {
44//              super(parent);
45//              initialize();
46//              this.parent = parent;
47//      }
[84]48        /*
[24]49        public OWLQueryBuilderImpl getOWLQueryBuilderImpl(){
50                makeOWLQueryBuilderImpl();
51               
52                return builder;
[84]53        }*/
[24]54
[84]55        public QueryPathGenerator getQueryPathGenerator(){
56                if ( generator == null ){
57                    makeQueryPathGenerator();
58                }
59                return generator;
60        }
61       
[9]62/*      SparqlBuilderPanel(SparqlAccessorForm sparqlAccessorForm){
63                super();
64               
65                this.setLayout(new BorderLayout());
66                JPanel jp_top = new JPanel();
67                jtf_start_class = new JTextField("http://dbpedia.org/ontology/Artist");
68                jp_top.add(new JLabel("Start Class:"));
69                jp_top.add(jtf_start_class);
70                JButton jb_start =  new JButton("Select");
71                jp_top.add(jb_start);
72
73                jtf_end_class = new JTextField("http://dbpedia.org/ontology/Award");
74                jp_top.add(new JLabel("End Class:"));
75                jp_top.add(jtf_end_class);
76                JButton jb_end =  new JButton("Select");
77                jp_top.add(jb_end);
78
79                JButton  jb_get_path = new JButton("Get Path");
80                jp_top.add(jb_get_path);
81               
82                map = new MapFactory();
83                map.setSPARQLbuilder(this);
84
85               
86                jb_get_path.addActionListener(new ActionListener() {
87                                       
88                        @Override
89                        public void actionPerformed(ActionEvent e) {
90                                System.out.println("getPaths:::>>>>"+jtf_start_class.getText()
91                                                +"<===>"+jtf_end_class.getText());
92                             //map.loadPathList(map.getDummyPathList());               
93                               
94                                try {
95                                        System.out.println("getPaths:::>>>>"+jtf_start_class.getText()
96                                                        +"<===>"+jtf_end_class.getText());
97                                        OWLQueryBuilderImpl builder = makeOWLQueryBuilderImpl();
98                                        Path[] path = builder.getPaths(jtf_start_class.getText(), jtf_end_class.getText());
99                                        System.out.println("RESULT:::>>>>"+path.length);
100                                       
101                                        map.loadPathList(path);         
102                                        //jta_query.setText(createSPARQL(path[0]));
103                                       
104                                } catch (Exception e1) {
105                                        // TODO Auto-generated catch block
106                                        e1.printStackTrace();
107                                }
108                               
109                               
110                               
111                        }
112                });
113               
114                this.add(jp_top, BorderLayout.NORTH);
115                jta_query = new JTextArea();
116                this.add(new JScrollPane(jta_query), BorderLayout.CENTER);
117                JPanel jp_bottom = new JPanel();
118                jp_bottom.add(new JButton("make query"));
119                this.add(jp_bottom, BorderLayout.SOUTH);
120        }*/
121
122
123        SparqlBuilderPanel(SparqlSearchPanel panel){
124                super();
125                this.search_panel = panel;
126               
127                this.setLayout(new GridLayout(3,1));
128                JPanel jp1 = new JPanel();
[33]129                jp1.setLayout(new BorderLayout());
[9]130               
131                jtf_start_class = new JTextField(40);
[74]132                jtf_start_class.setText("http://dbpedia.org/ontology/Artist");
[44]133                //jtf_start_class.setText("http://purl.jp/bio/10/lsd/ontology/201209#EnglishCode");
[74]134                //jtf_start_class.setText("http://purl.org/allie/ontology/201108#ShortForm");
[33]135                jp1.add(new JLabel("Start Class:"),BorderLayout.WEST);
136                jp1.add(jtf_start_class,BorderLayout.CENTER);
[9]137                JButton jb_start =  new JButton("Select");
[33]138                jp1.add(jb_start,BorderLayout.EAST);
[9]139                jb_start.addActionListener(new ActionListener(){
140
141                        @Override
142                        public void actionPerformed(ActionEvent arg0) {
143                                // TODO Auto-generated method stub
144                                System.out.println("jb_start action");
[24]145                                searchClass(jtf_start_class.getText());
146                                String classURI = searchClass(jtf_start_class.getText());
147                                jtf_start_class.setText(classURI);
[9]148                        }
149                       
150                });
151               
152                JPanel jp2 = new JPanel();
[33]153                jp2.setLayout(new BorderLayout());
[9]154                jtf_end_class = new JTextField(40);
[74]155            jtf_end_class.setText("http://dbpedia.org/ontology/Award");
[44]156                //jtf_end_class.setText("http://purl.jp/bio/10/lsd/ontology/201209#JapaneseEntry");
[74]157                //jtf_end_class.setText("http://purl.org/allie/ontology/201108#LongForm");
[44]158                               
[33]159                jp2.add(new JLabel("End Class:"),BorderLayout.WEST);
160                jp2.add(jtf_end_class,BorderLayout.CENTER);
[9]161                JButton jb_end =  new JButton("Select");
[24]162                jb_end.addActionListener(new ActionListener(){
163
164                        @Override
165                        public void actionPerformed(ActionEvent arg0) {
166                                // TODO Auto-generated method stub
167                                System.out.println("jb_end action");
168                                String classURI = searchClass(jtf_end_class.getText());
169                                jtf_end_class.setText(classURI);
170                        }
171                       
172                });
173               
174
[33]175                jp2.add(jb_end,BorderLayout.EAST);
[9]176
177               
178               
[33]179                JPanel jp3 = new JPanel();
180                jtf_mode = new JTextField(3);
181                jtf_mode.setText("0");
182                jp3.add(jtf_mode);
183               
184                jcb_count_ins = new JCheckBox("Count Ins.",false);
185                jp3.add(jcb_count_ins);
186               
[9]187                JButton  jb_get_path = new JButton("Get Path");
188                jp3.add(jb_get_path);
189               
190                map = new MapFactory();
191                map.setSPARQLbuilder(this);
192
193               
194                jb_get_path.addActionListener(new ActionListener() {
195                                       
196                        @Override
197                        public void actionPerformed(ActionEvent e) {
198                                System.out.println("get path action");
199                                //map.loadPathList(map.getDummyPathList());             
200                               
201                                try {
202                                        System.out.println("getPaths:::>>>>"+jtf_start_class.getText()
203                                                        +"<===>"+jtf_end_class.getText());
[33]204                                        String mode_str = jtf_mode.getText();
205                                        int mode = Integer.parseInt(mode_str);
206                                        if(mode!=0 && mode!=1){
207                                                mode = 0;
208                                        }
209                                       
210                                        boolean count_ins = jcb_count_ins.isSelected();
[84]211                                        /*
[33]212                                        Path[] path = getOWLQueryBuilderImpl().getPaths(
213                                                        jtf_start_class.getText(), jtf_end_class.getText(),
[44]214                                                        mode, !count_ins);
[84]215                                        */
216                                        Path[] path = getQueryPathGenerator().getPaths(jtf_start_class.getText(), jtf_end_class.getText(), !count_ins);
[9]217                                        System.out.println("RESULT:::>>>>"+path.length);
218                                       
219                                        map.loadPathList(path);         
220                                        //jta_query.setText(createSPARQL(path[0]));
221                                       
222                                } catch (Exception e1) {
223                                        // TODO Auto-generated catch block
224                                        e1.printStackTrace();
225                                        System.out.println(e.toString());
226                                }
227                               
228                               
229                               
230                        }
231                });
232               
233                this.add(jp1);
234                this.add(jp2);
235                this.add(jp3);
236               
237//              jta_query = new JTextArea();
238//              this.add(new JScrollPane(jta_query), BorderLayout.CENTER);
239//              JPanel jp_bottom = new JPanel();
240//              jp_bottom.add(new JButton("make query"));
241//              this.add(jp_bottom, BorderLayout.SOUTH);
242        }
243       
244
[24]245        String searchClass(String keyword){
246                System.out.println("SearcClass for..."+keyword);
247                String classURL ="";
248                try {
[84]249                        //SClass[] classes = this.getOWLQueryBuilderImpl().getOWLClasses(null, null, keyword, false);
[91]250                        SClass[] classes = this.getQueryPathGenerator().getClasses(keyword);
[24]251                        DefaultListModel model  = new DefaultListModel();
252                        for(int i=0;i<classes.length;i++){
253                                model.addElement(classes[i].getClassURI());
[44]254                                System.out.println("..."+classes[i].getClassURI());
[24]255                        }
256                        JList list = new JList(model);
257                       
258            JScrollPane listScrollPane = new JScrollPane(list);
259           
[44]260                        Object[] msg ={
261                                        "Select a Class:",listScrollPane};
[24]262                       
263                       
264                        int isOK = JOptionPane.showConfirmDialog(null,msg,"Select Class",JOptionPane.OK_CANCEL_OPTION,JOptionPane.QUESTION_MESSAGE);
265                       
266                        if(isOK==JOptionPane.OK_OPTION){
267                                int index = list.getSelectedIndex();
268                                classURL = model.getElementAt(index).toString();
269                        }
270                       
271                } catch (Exception e) {
272                        // TODO Auto-generated catch block
273                        e.printStackTrace();
274                }
275               
276               
277                return classURL;
278        }
[9]279       
280        public void setSPARQL(Path path,int num) throws Exception{
281                String text = createSPARQL(path,num);
282                //this.jta_query.setText(text);
283                this.search_panel.setQueryText(text);
284        }
285       
[84]286/*
287        void makeOWLQueryBuilderImpl() {       
[9]288//              String sparqlEndpoint = "http://lsd.dbcls.jp/sparql";
289                String sparqlEndpoint = search_panel.getSparqlAccessorForm().getCurrentEndPoint();
290               
291//              String sparqlEndpoint = "http://dbpedia.org/sparql";
292               
293                System.out.println("Create OWLQueryBuilder for "+sparqlEndpoint);
294                       
[24]295                builder = new OWLQueryBuilderImpl(sparqlEndpoint);
[9]296               
297                String keyword = "\"artiste\"@fr";
298                String[] graphURIs = new String[0];
299                try {
300                       
301        //      OWLQueryBuilder builder = new OWLQueryBuilderImpl(sparqlEndpoint);
302                String[] clsURIs;
303                        clsURIs = builder.getOWLClasses(graphURIs, keyword);
304                for(String cls: clsURIs){
305                        System.out.println(cls);
306                }
307
308                System.out.println("CLS");
309                ClassLink[] cls = builder.getNextClass(null, clsURIs[0], 0);
310                if( cls != null ){
311                        for( ClassLink cl: cls){
312                                System.out.println(cl.toString());
313                        }
314                }
315
316                System.out.println("CLS-INS");
317                cls = builder.getNextClassViaInstanceLink(null, clsURIs[0], 100);
318                if( cls != null ){
319                        for( ClassLink cl: cls){
320                                System.out.println(cl.toString());
321                        }
322                }
323
324                System.out.println("Instances");
325                Instance[] ins = builder.getInstances(null, "\"A.C. Reed\"@en");
326                if( ins != null ){
327                        for( Instance in: ins){
328                                System.out.println(in.toString());
329                        }
330                }
331                } catch (Exception e) {
332                        // TODO Auto-generated catch block
333                        System.out.println(e.toString());
334                        e.printStackTrace();
[84]335                }
336               
337                //return (OWLQueryBuilderImpl) builder;
338        }
339*/
340       
341        void makeQueryPathGenerator() {
342//              String sparqlEndpoint = "http://lsd.dbcls.jp/sparql";
343                String sparqlEndpoint = search_panel.getSparqlAccessorForm().getCurrentEndPoint();
344               
345//              String sparqlEndpoint = "http://dbpedia.org/sparql";
346               
347                System.out.println("Create OWLQueryBuilder for "+sparqlEndpoint);
348                       
[111]349                generator = new QueryPathGenerator(sparqlEndpoint, "cdata");
[84]350               
351               
352                //String keyword = "\"artiste\"@fr";
353                //String[] graphURIs = new String[0];
354                /*
355                try {
356                       
357        //      OWLQueryBuilder builder = new OWLQueryBuilderImpl(sparqlEndpoint);
358               
359                String[] clsURIs;
360                        clsURIs = builder.getOWLClasses(graphURIs, keyword);
361                for(String cls: clsURIs){
362                        System.out.println(cls);
363                }
364
365                System.out.println("CLS");
366                ClassLink[] cls = builder.getNextClass(null, clsURIs[0], 0);
367                if( cls != null ){
368                        for( ClassLink cl: cls){
369                                System.out.println(cl.toString());
370                        }
371                }
372
373                System.out.println("CLS-INS");
374                cls = builder.getNextClassViaInstanceLink(null, clsURIs[0], 100);
375                if( cls != null ){
376                        for( ClassLink cl: cls){
377                                System.out.println(cl.toString());
378                        }
379                }
380
381                System.out.println("Instances");
382                Instance[] ins = builder.getInstances(null, "\"A.C. Reed\"@en");
383                if( ins != null ){
384                        for( Instance in: ins){
385                                System.out.println(in.toString());
386                        }
387                }
388                } catch (Exception e) {
389                        // TODO Auto-generated catch block
390                        System.out.println(e.toString());
391                        e.printStackTrace();
[17]392                }*/
[9]393               
[24]394                //return (OWLQueryBuilderImpl) builder;
[9]395        }
396
[84]397       
398        public String createSPARQL(Path path) throws Exception {
399                return createSPARQL(path, 0);
400        }
[9]401
[84]402        public String createSPARQL(Path path, int num) throws Exception {
[9]403               
[54]404                if( path == null ){
405                        throw new Exception("Path is null.");
406                }
[9]407                String startClass = path.getStartClass();
408                List<ClassLink> classLinks = path.getClassLinks();
409               
410                StringBuffer queryStr = new StringBuffer();
411                StringBuffer selStr = new StringBuffer();
412                StringBuffer whereStr = new StringBuffer();
413                if(num==0){
414                        num = classLinks.size();
415                }
416                       
417                queryStr.append("PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>\n");
418                queryStr.append("PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>\n");
419                               
420                selStr.append("SELECT ");
421                whereStr.append("WHERE { \n");
422
423                String properties = null;
424                String objectClasses = null;
425                String subjectClasses = null;
426                Direction direction = null;
427                int i = 0;
428                int k = 0;
429                for (ClassLink link :classLinks )
430                {
431                        properties = link.getPropertyURI();
432                        objectClasses = link.getLinkedClassURI();
433                        direction = link.getDirection();
434                       
435                        if (i==0)
436                    subjectClasses = startClass;
437                       
438                        selStr.append("?c").append(i).append(" ");
[40]439                        selStr.append("?l").append(i).append(" ");
[9]440                       
441                        if(i == classLinks.size())
442                                selStr.append("\n");
443                       
444                       
445                        whereStr.append("?c").append(i).
446                        append(" rdf:type ").
447                        append("<").
448                        append(subjectClasses).
449                        append(">").
450                        append(".\n");
[40]451                       
452                        whereStr.append("OPTIONAL{\n?c"+i+" rdfs:label ?l"+i+".}\n");
453
[9]454                                               
455                        if(direction == Direction.forward)
456                        {
457                        whereStr.append("?c").append(i).append(" ");
458                        whereStr.append("<").append(properties).append("> ");                   
459                        whereStr.append("?c").append(i+1).append(".\n");                       
460                        }
461                        else
462                        {
463                                whereStr.append("?c").append(i+1).append(" ");
464                                whereStr.append("<").append(properties).append("> ");
465                                whereStr.append("?c").append(i).append(".\n");
466                        }
467                       
468                        subjectClasses = objectClasses;
469                        i++;
470                        k++;
471                        if(k>=num){
472                                break;
473                        }
474                }
475               
476                selStr.append("?c").append(i).append(" \n");
[40]477                selStr.append("?l").append(i).append(" \n");
[9]478                whereStr.append("?c").append(i).append(" rdf:type ").
479                    append("<").
480                    append(subjectClasses).
481                    append(">").
482                        append(".\n");
[40]483                whereStr.append("OPTIONAL{\n?c"+i+" rdfs:label ?l"+i+".}\n");
[9]484       
485                                       
[40]486                queryStr.append(selStr).append(whereStr);
[9]487               
[40]488                queryStr.append("}");
489                //OPTIONAL
490                queryStr.append("LIMIT 100\n");;
491               
[9]492                //System.out.println(queryStr);
493                return queryStr.toString();
494        }
495
496
497       
498}
[44]499
500class classSelectDialog extends JDialog{
501       
502        classSelectDialog(){
503                super();
504                this.setVisible(true);
505               
506        }
507       
508       
509       
510}
Note: リポジトリブラウザについてのヘルプは TracBrowser を参照してください。