Package br.uniriotec.orion.model.forte.resources

Examples of br.uniriotec.orion.model.forte.resources.ConceptAxiom


            }

            if(conceito.getAxiomas() != null){
                Iterator<ConceptAxiom> itAx = conceito.getAxiomas().iterator();
                while(itAx.hasNext()){
                    ConceptAxiom ax = itAx.next();
                    System.out.println("--- Axiom -> "+ax);
                }
            }
           
            if(conceito.getRestrictions() != null){
View Full Code Here


             *
             */
            Set<OntClass> conjSubclasses = parser.listarSubclasses(ontClass);
            if(conjSubclasses.size() != 0){
              for(OntClass c: conjSubclasses){
                ConceptAxiom axioma = new ConceptAxiom();
                    axioma.setNome("superClassOf");
                    axioma.setValor(lowerFirstChar(c.getLocalName()));
                    tmpConcept.addConceptAxiom(axioma);
              }
            }
           
//            /* Verificar todas as outras classes da ontologia e apurar se o conceito
//             * que esta sendo criado eh disjunto a alguma destas outras classes. Sendo,
//             * um axioma "disjointWith" deve ser criado.
//             */
//            for(OntClass c : conjClasses){
//              if(c.getDisjointWith() != null){
//                    //iterador em cima de todas as classes disjuntas
//                    Iterator<OntClass> it = c.listDisjointWith();
//                    OntClass aux = null;
//                    while(it.hasNext()){
//                        aux = it.next();
//                        //Se aux == ontClass entao o conceito (ontClass) e a
//                        //classe iterada (c) sao disjuntas
//                        if(aux.getLocalName().equalsIgnoreCase(ontClass.getLocalName())){
//                          //Criacao do conceito negativo e verificacao para adicao
//                            Concept conceitoNeg = criarConceitoNegativo(c);
//                            if(isConceptInList(conceitoNeg, conceptsList) == false){
//                              conceptsList.add(conceitoNeg); 
//                            }
//                           
//                           //adiciona a referencia de disjuncao
//                            ConceptAxiom axioma = new ConceptAxiom();
//                            axioma.setNome("disjointWith");
//                            axioma.setValor(lowerFirstChar(conceitoNeg.getNome()));
//
//                            tmpConcept.addConceptAxiom(axioma);
//                        }
//                    }
//                }
//            }
           
           
           
            /* Recupera todos os axiomas subClassOf da classe, identifica qual
             * faz referencia a classe pai e adiciona aos axiomas do conceito.
             *
             * Ao recuperar a classe pai verifica-se se ela � abstrata. Sendo, os relacionamentos
             * sao inseridos no conceito.
             *
             * Recupera todos os restrictions indicados nos subclassOf restantes
             * e adiciona como restricoes no conceito atraves do metodo addRestriction
             *
             * OBS: Restrictions sao Superclasses sem LocalName.
             */
            if(ontClass.getSuperClass() != null){
               Iterator<OntClass> it = ontClass.listSuperClasses(true);
               OntClass aux = null;
               while(it.hasNext()){
                   aux = it.next();
                   if(aux.getLocalName() != null){ //tem LocalName, referencia a classe pai
                       ConceptAxiom axioma = new ConceptAxiom();
                       axioma.setNome("subClassOf");
                       axioma.setValor(lowerFirstChar(aux.getLocalName()));
                       tmpConcept.addConceptAxiom(axioma);
                      
                       //Se a super classe for abstrata recupera todos os relacionamentos
                       List<ConceptRestriction> relacionamentosSup = recuperarRelacionamentosSup(aux, ontClass.getLocalName());
                       for(ConceptRestriction conRest : relacionamentosSup){
                         tmpConcept.addConceptRestriction(conRest);
                       }
                   }else{ //eh um restriction
                       Restriction restriction = aux.asRestriction();
                       ConceptRestriction conRest = recuperarDadosRestriction(restriction, tmpConcept.getNome());
                       tmpConcept.addConceptRestriction(conRest);
                      
//                       //Verificar se existe mais de uma classe no range do OP e criar disjoints
//                     ObjectProperty op = parser.recuperarObjectProperty(conRest.getNomeProperty());
//                     if(op.getRange().asClass().isUnionClass()){
//                       UnionClass uniao = op.getRange().asClass().asUnionClass();
//                           ExtendedIterator<? extends OntClass> iterador = uniao.listOperands();
//                           while(iterador.hasNext()){
//                               OntClass classe = (OntClass) iterador.next();
//                               if(classe.getLocalName().equals(ontClass.getLocalName()) == false){
//                                
//                                 //Criacao e adicao do conceito negativo a lista de conceitos
//                                 Concept conceitoNeg = criarConceitoNegativo(classe);
//                                   if(isConceptInList(conceitoNeg, conceptsList) == false){
//                                     conceptsList.add(conceitoNeg); 
//                                   } 
//                                  
//                                   //adiciona a referencia de disjuncao
//                                   ConceptAxiom cAxioma = new ConceptAxiom();
//                                   cAxioma.setNome("disjointWith");
//                                   cAxioma.setValor(lowerFirstChar(conceitoNeg.getNome()));
//                                  
//                                   tmpConcept.addConceptAxiom(cAxioma);
//                               }
//                           }
//                     }
                   }
               }
            }

//            /*
//             * Recupera todos os axiomas DisjointWith do conceito e cria um conceito
//             * auxiliar para permitir a negacao.
//             *
//             * Como o forte nao e capaz de revisar regras com negacao e necessario
//             * criar um novo ceonceito que possui a negacao e inclui-lo no FDT.
//             *
//             * Cria-se entao um conceitoNegacao e um axioma subclassOf relacionando
//             * a classe presente ao conceito negado, de forma que a geracao da regra
//             * cria um predicado "regraNegacao(A)".
//             */
//            if(ontClass.getDisjointWith() != null){
//                //iterador em cima de todas as classes disjuntas
//                Iterator<OntClass> it = ontClass.listDisjointWith();
//                OntClass aux = null;
//                while(it.hasNext()){
//                    aux = it.next();
//
//                    //Criacao e adicao do conceito negativo a lista de conceitos
//                    Concept conceitoNeg = criarConceitoNegativo(aux);
//                    if(isConceptInList(conceitoNeg, conceptsList) == false){
//                      conceptsList.add(conceitoNeg); 
//                    }
//                   
//                    //adiciona a referencia de disjuncao
//                    ConceptAxiom axioma = new ConceptAxiom();
//                    axioma.setNome("disjointWith");
//                    axioma.setValor(lowerFirstChar(conceitoNeg.getNome()));
//
//                    tmpConcept.addConceptAxiom(axioma);
//                }
//            }

            /*
             * Se a classe possuir o axioma EquivalentClass indicando sua
             * equivalencia a outra classe da ontologia entao ambas deverao
             * ser excluidas da revisao, sendo adicionadas ao FDT.
             *
             * Na geracao do conceito e inserido um axioma equivalentClass na lista
             * de axiomas com o valor igual ao nome do conceito ao qual se refere
             * a equivalencia. Desta forma sera possivel identificar posteriormente
             * os dois conceitos que deverao ser inseridos no FDT.
             */
            if(ontClass.getEquivalentClass() != null){
                //iterador em cima de todas as classes equivalentes
                Iterator<OntClass> it = ontClass.listEquivalentClasses();
                OntClass aux = null;
                while(it.hasNext()){
                    aux = it.next();
                    ConceptAxiom axioma = new ConceptAxiom();
                    axioma.setNome("equivalentClass");
                    axioma.setValor(lowerFirstChar(aux.getLocalName()));
                    tmpConcept.addConceptAxiom(axioma);
                }
            }

            conceptsList.add(tmpConcept);
View Full Code Here

     * @return
     */
    @SuppressWarnings("unused")
  private Concept criarConceitoNegativo(OntClass ontClass) {
    Concept conceitoNeg = new Concept();
            ConceptAxiom axiomaNeg = new ConceptAxiom();
            axiomaNeg.setNome("subClassOf");
            axiomaNeg.setValor("\\+ "+lowerFirstChar(ontClass.getLocalName()));
        conceitoNeg.setNome("nao"+lowerFirstChar(ontClass.getLocalName()));
        conceitoNeg.addConceptAxiom(axiomaNeg);
        return conceitoNeg;
  }
View Full Code Here

TOP

Related Classes of br.uniriotec.orion.model.forte.resources.ConceptAxiom

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.