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

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

Changed for new Java Classes

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