krssconverter.java

来自「Semantic Web Ontology Editor」· Java 代码 · 共 902 行 · 第 1/4 页

JAVA
902
字号
//                              kb.addObjectProperty(r);
                               this.addEntity(ontology, new URI(r.getName()), OBJECT_PROP);

                               if(str.equalsIgnoreCase("DEFINE-PRIMITIVE-ATTRIBUTE")
                               || str.equalsIgnoreCase("DEFPRIMATTRIBUTE")) {
//                                      kb.addFunctionalProperty(r);
                                       this.setPropAttribute(ontology, new URI(r.getName()), OBJECT_PROP, FUNC, true);
                                       if(DEBUG) System.out.println("DEFINE-PRIMITIVE-ATTRIBUTE " + r);
                               }
                               else if(DEBUG)
                                       System.out.println("DEFINE-PRIMITIVE-ROLE " + r);

                               while(!peekToken(in, ')')) {
                                       if(peekToken(in, ':')) {
                                               parseToken(in, ':');
                                               String cmd = getToken(in);
                                               if(cmd.equalsIgnoreCase("parents")) {
                                                       boolean paren = peekToken(in, '(');
                                                       if(paren) {
                                                               parseToken(in, '(');
                                                               while(!peekToken(in, ')')) {
                                                                       ATermAppl s = getTerm(in);
                                                                       if(!s.getName().equals("NIL")) {
//                                                                              kb.addObjectProperty(s);
                                                                               this.addEntity(ontology, new URI(s.getName()), OBJECT_PROP);
//                                                                              kb.addSubProperty(r, s);
                                                                               List args = new ArrayList();
                                                                               args.add(r.getName());
                                                                               args.add(s.getName());
                                                                               this.addAxiom(ontology, SUB_OPROP, args);
                                                                               if(DEBUG) System.out.println("PARENT-ROLE " + r + " " + s);
                                                                       }
                                                               }
                                                               parseToken(in, ')');
                                                       }
                                                       else {
                                                               ATermAppl s = getTerm(in);
                                                               if(!s.toString().equalsIgnoreCase("NIL")) {
//                                                                      kb.addObjectProperty(s);
                                                                       this.addEntity(ontology, new URI(s.getName()), OBJECT_PROP);
//                                                                      kb.addSubProperty(r, s);
                                                                       List args = new ArrayList();
                                                                       args.add(r.getName());
                                                                       args.add(s.getName());
                                                                       this.addAxiom(ontology, SUB_OPROP, args);
                                                                       if(DEBUG) System.out.println("PARENT-ROLE " + r + " " + s);
                                                               }
                                                       }
                                               }
                                               else if(cmd.equalsIgnoreCase("transitive")) {
                                                       assertTrue(getToken(in).equalsIgnoreCase("T"));
//                                                      kb.addTransitiveProperty(r);
                                                       this.setPropAttribute(ontology, new URI(r.getName()), OBJECT_PROP, TRANS, true);
                                                       if(DEBUG) System.out.println("TRANSITIVE-ROLE " + r);
                                               }
                                               else if(cmd.equalsIgnoreCase("range")) {
                                                   OWLDescription range = parseExpr(in, ontology);
//                                                  kb.addClass(range);
//                                                  kb.addRange(r, range);
                                                   List args = new ArrayList();
                                                   args.add(r.getName());
                                                   args.add(range);
                                                   this.addAxiom(ontology, OBJ_RANGE, args);
                                                       if(DEBUG) System.out.println("RANGE " + r + " " + range );
                                               }
                                               else if(cmd.equalsIgnoreCase("domain")) {
                                                   OWLDescription domain = parseExpr(in, ontology);
//                                                  kb.addClass(domain);
//                                                      kb.addDomain(r, domain);
                                                   List args = new ArrayList();
                                                   args.add(r.getName());
                                                   args.add(domain);
                                                   this.addAxiom(ontology, OBJ_DOMAIN, args);
                                                       if(DEBUG) System.out.println("DOMAIN " + r + " " + domain );
                                               }
                                               else if(cmd.equalsIgnoreCase("inverse")) {
                                                   ATermAppl inv = getTerm(in);
//                                                      kb.addInverseProperty(r, inv);
                                                   this.addEntity(ontology, new URI(inv.getName()), OBJECT_PROP);
                                                       List args = new ArrayList();
                                                       args.add(r.getName());
                                                       args.add(inv.getName());
                                                       this.addAxiom(ontology, INV_PROP, args);
                                                       if(DEBUG) System.out.println("INVERSE " + r + " " + inv );
                                               }
                                               else
                                                       throw new RuntimeException("Invalid role spec "  + cmd);
                                       }
                                       else if(peekToken(in, '(')) {
                                               parseToken(in, '(');
                                               String cmd = getToken(in);
                                               if(cmd.equalsIgnoreCase("domain-range")) {
                                                       ATermAppl domain = getTerm(in);
                                                       ATermAppl range = getTerm(in);

                                                       // add atomic domain and range
                                                       List args = new ArrayList();
                                                       args.add(r);
                                                       args.add(ontology.getClass(new URI(domain.getName())));
//                                                      kb.addDomain(r, domain);
                                                       this.addAxiom(ontology, OBJ_DOMAIN, args);
                                                       args.remove(1);
                                                       args.add(ontology.getClass(new URI(range.getName())));
//                                                      kb.addRange(r, range);
                                                       this.addAxiom(ontology, OBJ_RANGE, args);

                                                       if(DEBUG) System.out.println("DOMAIN-RANGE " + r + " " + domain + " " + range);
                                               }
                                               else
                                                       throw new RuntimeException("Invalid role spec");
                                               parseToken(in, ')');
                                       }
                               }
                       }
                       else if(str.equalsIgnoreCase("DEFINE-PRIMITIVE-CONCEPT")
                            || str.equalsIgnoreCase("DEFPRIMCONCEPT")) {
                               ATermAppl c = getTerm(in);
//                              kb.addClass(c);
                               OWLClass cls = (OWLClass) this.addEntity(ontology, new URI(c.getName()), CLASS);

                               if(!peekToken(in, ')')) {
                                       OWLDescription desc = parseExpr(in, ontology);

                                       if(desc!=null) {
//                                              kb.addClass(expr);
//                                              kb.addSubClass(c, expr);
                                               List args = new ArrayList();
                                               args.add(cls);
                                               args.add(desc);
                                               this.addAxiom(ontology, SUB_CLASS, args);
                                       }
                                       if(DEBUG) System.out.println("DEFINE-PRIMITIVE-CONCEPT " + c + " " + desc);
                               }
                       }
                       else if(str.equalsIgnoreCase("DEFINE-DISJOINT-PRIMITIVE-CONCEPT")) {
                               ATermAppl c = getTerm(in);
//                              kb.addClass(c);
                               OWLClass cls = (OWLClass) this.addEntity(ontology, new URI(c.getName()), CLASS);

                               parseToken(in, '(');
                               while(!peekToken(in, ')')) {
                   OWLDescription desc = parseExpr(in, ontology);

                                       List prevDefinitions = (List) disjoints.get( desc );
                                       if( prevDefinitions == null )
                                           prevDefinitions = new ArrayList();
                                       for(Iterator i = prevDefinitions.iterator(); i.hasNext();) {
                                           OWLClass other = (OWLClass) i.next();
                                               addAxiom( ontology, DISJ_CLASS, Arrays.asList(new OWLClass[] {cls,other}) );
                                               if(DEBUG) System.out.println("DEFINE-PRIMITIVE-DISJOINT " + c + " " + other);
                                       }
                                       prevDefinitions.add( cls );
                               }
                               parseToken(in, ')');

                               OWLDescription desc = parseExpr(in, ontology);
//                              kb.addSubClass(c, expr);
                               List args = new ArrayList();
                               args.add(cls);
                               args.add(desc);
                               this.addAxiom(ontology, SUB_CLASS, args);

//                              if(DEBUG) System.out.println("DEFINE-DISJOINT-PRIMITIVE-CONCEPT " + c + " " + expr);
                       }
                       else if(str.equalsIgnoreCase("DEFINE-CONCEPT")
                            || str.equalsIgnoreCase("DEFCONCEPT")) {
                               ATermAppl c = getTerm(in);
//                              kb.addClass(c);
                               this.addEntity(ontology, new URI(c.getName()), CLASS);

                               OWLDescription desc = parseExpr(in, ontology);
//                              kb.addSameClass(c, expr);
                               List args = new ArrayList();
                               args.add(ontology.getClass(new URI(c.getName())));
                               args.add(desc);
                               this.addAxiom(ontology, SAME_CLASS, args);

//                              if(DEBUG) System.out.println("DEFINE-CONCEPT " + c + " " + expr);
                       }
                       else if(str.equalsIgnoreCase("IMPLIES") || str.equalsIgnoreCase("implies_c")) {
                               OWLDescription c1 = parseExpr(in, ontology);
                               OWLDescription c2 = parseExpr(in, ontology);
//                              kb.addClass(c1);
//                              kb.addClass(c2);
//                              kb.addSubClass(c1, c2);
                               List args = new ArrayList();
                               args.add(c1);
                               args.add(c2);
                               this.addAxiom(ontology, SUB_CLASS, args);


                               if(DEBUG) System.out.println("IMPLIES " + c1 + " " + c2);
                       }
                       else if(str.equalsIgnoreCase("equal_c")) {
                           OWLDescription c1 = parseExpr(in, ontology);
                           OWLDescription c2 = parseExpr(in, ontology);
//                          kb.addClass(c1);
//                          kb.addClass(c2);
//                          kb.addSubClass(c1, c2);
                           List args = new ArrayList();
                           args.add(c1);
                           args.add(c2);
                           this.addAxiom(ontology, SAME_CLASS, args);


                           if(DEBUG) System.out.println("SAME Class " + c1 + " " + c2);
                   }
                       else if(str.equalsIgnoreCase("implies_r")) {
                    	   List args = new ArrayList();
                           ATermAppl s1 = getTerm(in);
                           this.addEntity(ontology, new URI(s1.getName()), OBJECT_PROP);
                           args.add(s1.getName());
                           ATermAppl s2 = getTerm(in);
                           this.addEntity(ontology, new URI(s2.getName()), OBJECT_PROP);
                           args.add(s2.getName());
                           this.addAxiom(ontology, SUB_OPROP, args);

                          }
                       else if(str.equalsIgnoreCase("functional")){
                    	   ATermAppl r = getTerm(in);
                    	   this.addEntity(ontology, new URI(r.getName()), OBJECT_PROP);
                    	   this.setPropAttribute(ontology, new URI(r.getName()), OBJECT_PROP, FUNC, true);
                       }
                       
                       else if(str.equalsIgnoreCase("transitive")){
                    	   ATermAppl r = getTerm(in);

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?