//Hacer Metodo recursivo que me devuelva la mayor profundidad por OWLClass

        /* private int getDepthClass(OWLClass _class, int level)
         * {
         *   java.util.Set subClass = _class.getSubClasses(ontology);
         *
         *   java.util.Iterator iterator = subClass.iterator();
         *
         *   level = level + 1;
         *
         *   int result = level;
         *
         *   while (iterator.hasNext())
         *   {
         *       int val = getDepthClass((OWLClass)iterator.next(), level);
         *
         *       if (val > result)
         *           result = val;
         *   }
         *
         *   return result;
         * }*/

        //Hacer Metodo recursivo que me devuelva la mayor profundidad por OWLClass
        private int getDepthClass(OWLClass _class)
        {
            int level = 1;

            java.util.Set supClass = _class.getSuperClasses(ontology);
            //java.util.Iterator iterator = supClass.iterator();

            //int result = level;
            while (supClass != null)
            {
                java.util.Iterator iterator = supClass.iterator();

                supClass = null;

                if (iterator.hasNext())
                {
                    object iteratorNext = iterator.next();
                    if (iteratorNext is OWLClass)
                    {
                        level    = level + 1;
                        supClass = (iteratorNext as OWLClass).getSuperClasses(ontology);
                    }
                }
            }

            return(level);
        }
Exemplo n.º 2
0
    public static HashSet <T> toHashSet <T>(this java.util.Set set)
    {
        HashSet <T> newSet = new HashSet <T>();

        if (set != null)
        {
            Iterator setIterator = set.iterator();
            while (setIterator.hasNext())
            {
                newSet.Add((T)setIterator.next());
            }
        }
        return(newSet);
    }
        private OWLClass getClass(java.util.Set _Class, string keyOwl)
        {
            java.util.Iterator iterator = _Class.iterator();
            OWLClass           _class;

            while (iterator.hasNext())
            {
                _class = (OWLClass)iterator.next();

                if (_class.getIRI().toString().Equals(keyOwl))
                {
                    return(_class);
                }
            }

            return(null);
        }
        /// <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);
                    }
                }
            }
        }