Пример #1
0
        public OWLClass GetConcept(OWLOntology ontology)
        {
            if (this.concept == null)
            {
                this.concept = getClass(ontology.getClassesInSignature(), this.conceptKey);
            }

            return(this.concept);
        }
        internal int getWeigthByConcept(OntologyConcept ontologyConcept)
        {
            int Weigth = 0;

            if (ClassParent == null)
            {
                //Obtiene solo las clases.
                OWLClass _class = getClass(ontology.getClassesInSignature(), ontologyConcept.ConceptKey);
                if (_class != null)
                {
                    Weigth = getDepthClass(_class);
                }
                //else
                //{
                //    //Al ser individuo no se puede buscar en subclase, por tanto el peso es 1
                //    Weigth = 1;
                //}
            }
            return(Weigth);
        }
        /// <summary>
        /// proceso para cargar las clases, subclases y axiomas de la ontologia
        /// </summary>
        private void LoadOWLAPI()
        {
            //Inicializamos variables
            OntologyConcept ontologyConcept = null;

            int    weigth     = 1;
            string claseKey   = string.Empty;
            string claseValor = string.Empty;

            //OWLClass _class;
            //Se carga la ontologia
            string path = url;

            java.io.File file = new java.io.File(path);
            //Aseguramos una ontologia en el managet
            ontology = ontologyManager.loadOntologyFromOntologyDocument(file);

            //Creamos el datafactory para obtener los labels de las clases
            OWLDataFactory        df    = ontologyManager.getOWLDataFactory();
            OWLAnnotationProperty label = df.getOWLAnnotationProperty(OWLRDFVocabulary.RDFS_LABEL.getIRI());

            //Obtenemos las clases de la ontologia y las recorremos para obtener las anotaciones
            java.util.Set clases = ontology.getClassesInSignature();
            for (java.util.Iterator iteratorClases = clases.iterator(); iteratorClases.hasNext();)
            {
                OWLClass         clase       = (OWLClass)iteratorClases.next();
                List <Anotacion> Anotaciones = new List <Anotacion>();
                java.util.Set    lit         = clase.getAnnotations(ontology, label);
                //Se recorren las anotaciones tipo Label
                for (java.util.Iterator iteratorAnno = lit.iterator(); iteratorAnno.hasNext();)
                {
                    OWLAnnotation anno           = (OWLAnnotation)iteratorAnno.next();
                    OWLLiteral    val            = (OWLLiteral)anno.getValue();
                    string        valorAnotacion = string.Empty;
                    if (val.hasLang("es"))
                    {
                        //Se debe hacer un tratamiento a la cadena por los acentos
                        valorAnotacion = ToAscii(val.getLiteral()).Trim();
                    }
                    else
                    {
                        valorAnotacion = val.getLiteral().Trim();
                    }
                    //Agregar la anotacion a la lista
                    Anotacion annotemp = new Anotacion(anno.getSignature().ToString(), valorAnotacion, val.getLang());
                    Anotaciones.Add(annotemp);
                    //Añadimos la anotacion a la lista de valores a consultar verificando que no este repetido
                    if (!valores.Contains(valorAnotacion) && !string.IsNullOrEmpty(valorAnotacion))
                    {
                        valores.Add(valorAnotacion);
                    }

                    //Reportar la anotacion encontrada
                    Trace.WriteLine(clase.getSignature().ToString() + " -> " + valorAnotacion);
                    //Almacenamos todas anotaciones en un string para el valor de la clase
                    claseValor = claseValor + " " + valorAnotacion;

                    //En caso de tener individuos se almacena en la lista de valores para su búsqueda
                    Trace.WriteLine("Obteniendo conceptos de los individuos");
                    string        individuoKey = string.Empty;
                    java.util.Set individuos   = clase.getIndividuals(ontology);
                    for (java.util.Iterator iteratorIndividuos = individuos.iterator(); iteratorIndividuos.hasNext();)
                    {
                        OWLIndividual individuo = (OWLIndividual)iteratorIndividuos.next();
                        java.util.Set litind    = individuo.asOWLNamedIndividual().getAnnotations(ontology, df.getRDFSLabel());

                        //Se recorre las anotaciones tipo Label individuo
                        for (java.util.Iterator iteratorAnnoind = litind.iterator(); iteratorAnnoind.hasNext();)
                        {
                            OWLAnnotation annoind           = (OWLAnnotation)iteratorAnnoind.next();
                            OWLLiteral    valind            = (OWLLiteral)annoind.getValue();
                            string        valorAnotacionind = string.Empty;
                            if (valind.hasLang("es"))
                            {
                                //Se debe hacer un tratamiento a la cadena por los acentos
                                valorAnotacionind = ToAscii(valind.getLiteral()).Trim();
                            }
                            else
                            {
                                valorAnotacionind = valind.getLiteral().Trim();
                            }
                            //Agregar la anotacion a la lista
                            Anotacion annotempind = new Anotacion(annoind.getSignature().ToString(), valorAnotacionind, valind.getLang());
                            Anotaciones.Add(annotempind);
                            //Añadimos la anotacion a la lista de valores a consultar verificando que no este repetido
                            if (!valores.Contains(valorAnotacionind) && !string.IsNullOrEmpty(valorAnotacionind))
                            {
                                valores.Add(valorAnotacionind);
                            }
                            //Reportar la anotacion encontrada
                            Trace.WriteLine(clase.getSignature().ToString() + ":" + individuo.getSignature().ToString() + " -> " + valorAnotacionind);
                            //Almacenamos todas anotaciones en un string para el valor de la clase
                            claseValor = claseValor + " " + valorAnotacionind;
                        }
                    }

                    //Agregar el concepto a la lista
                    claseKey                    = clase.getSignature().ToString();
                    ontologyConcept             = new OntologyConcept(claseKey, claseValor, weigth, clase, clase.getSuperClasses(ontology), clase.getSubClasses(ontology));
                    ontologyConcept.Anotaciones = Anotaciones;
                    //Reinicializamos el valor para la nueva clase
                    claseValor = "";
                    //Verificar que se obtengan conceptos diferentes. Las claseKey se repiten siempre que aporten anotaciones diferentes
                    if (!this.concepts.ContainsKey(claseKey) && !this.concepts.ContainsValue(ontologyConcept) && !valores.Contains(ontologyConcept.ConceptValue) && !string.IsNullOrEmpty(ontologyConcept.ConceptValue))
                    {
                        this.concepts.Add(claseKey, ontologyConcept);
                    }
                }
            }
        }