コード例 #1
0
        public List <string> RetornarConceptosOntologia(string concepto, OntModel ontModel, string tipoAnalizador, string strontologia)
        {
            //Lista de conceptos a Retornar
            List <string> ListaConceptos = new List <string>();

            //conversion a minusculas de la cadena de consulta
            concepto = concepto.ToLower();

            ////Se crea un objeto de tipo AnalizadorLexico para eliminar los stopwords de la consulta de usuario, Libreria utilizada:Lucenet.Net
            //AnalizadorLexico analizador = new AnalizadorLexico();

            ////Obtencion de palabras clave de la consulta
            //System.Collections.ArrayList ListKeyWords = new System.Collections.ArrayList();
            //ListKeyWords = analizador.getKeywords(consulta, tipoAnalizador);

            //Cargar la Ontologia
            OntologiaDominio ontologia = new OntologiaDominio();

            ontologia.Model = ontModel;

            ////identificacion de Conceptos
            //ontologia.termsIdentification(ListKeyWords);
            //System.Collections.ArrayList lcc = ontologia.ListConceptoCompuesto;
            //System.Collections.ArrayList lcs = ontologia.ListConceptoSimple;
            //lcc.AddRange(lcs);  //Union de conceptos simples y compuestos
            //System.Collections.ArrayList lcr = ontologia.ListRestrictionConceps; //conceptos de restricciones

            ////System.Collections.ArrayList lcc = ontologia.ListConceptoCompuesto;
            ////lcc.AddRange(ListKeyWords);

            ////Añadimos los conceptos hijos e instancias para hacer la consulta más precisa
            //string consultaExpandida = ontologia.CadenaExpandConsult;
            //foreach (string concepto in lcc)
            //{
            List <OntologyConceptCopy> hijos = new List <OntologyConceptCopy>();

            hijos = ontologia.ObtenerConceptosHijos(ontModel, concepto, tipoAnalizador, strontologia);
            foreach (OntologyConceptCopy oncp in hijos)
            {
                if (!ListaConceptos.Contains(oncp.OntCopyNameConcept))
                {
                    ListaConceptos.Add(oncp.OntCopyNameConcept);
                }
            }
            //}

            //Retornar la cadena de consulta expandida
            return(ListaConceptos);
        }
コード例 #2
0
    public string ExpandirConsulta(string CaminoOntologia, string consulta, string tipoAnalizador)
    {
        //Expansion de consulta con MSEC
        OntologiaDominio ontologia = new OntologiaDominio();

        ontologia.readOntology(CaminoOntologia);

        //Creamos el objeto que permite expandir la consulta
        ExpansionHandler eh = new ExpansionHandler();

        //Finalmente se expande la consulta
        string expandedQuery = eh.expandirConsulta(consulta, ontologia.Model, tipoAnalizador, CaminoOntologia);

        return(expandedQuery);
    }
コード例 #3
0
    public string RetornarConceptosOntologia(string CaminoOntologia, string consulta, string tipoAnalizador)
    {
        //Expansion de consulta con MSEC
        OntologiaDominio ontologia = new OntologiaDominio();

        ontologia.readOntology(CaminoOntologia);

        //Creamos el objeto que permite expandir la consulta
        ExpansionHandler eh = new ExpansionHandler();

        //Finalmente se expande la consulta
        List <string> lstConceptos = new List <string>();

        lstConceptos = eh.RetornarConceptosOntologia(consulta, ontologia.Model, tipoAnalizador, CaminoOntologia);

        //Retornar la lista serializada
        return(lstConceptos.SerializarToXml());
    }
コード例 #4
0
    public string CargarConceptos(string CaminoOntologia)
    {
        try
        {
            OntologiaDominio ontologia = new OntologiaDominio();
            ontologia.readOntology(CaminoOntologia);

            //Creamos el objeto que permite expandir la consulta
            ExpansionHandler eh = new ExpansionHandler();

            //Se copian los conceptos para la BD
            eh.Conceptos = OntologiaDominio.ObtenerConceptosOntologia(CaminoOntologia);
            ontologia.AlamcenarConceptos(eh.Conceptos);

            //Retornamos los conceptos almacenados
            return("Conceptos Cargados Correctamente");
        }
        catch (Exception ex)
        {
            return("No se pudo cargar los conceptos el error es: " + ex.Message);
        }
    }
コード例 #5
0
        /// <summary>
        /// Expande una consulta de usuario mediante MSEC (Modelo Semántico de Expansión de Consulta)
        /// </summary>
        /// <param name="consulta">Cadena de consulta digitada por el usuario</param>
        /// <param name="ontModel">Ontologia de dominio</param>
        /// <returns>Cadena de consulta expandida</returns>
        public string expandirConsulta(string consulta, OntModel ontModel, string tipoAnalizador, string strontologia)
        {
            //conversion a minusculas de la cadena de consulta
            consulta = consulta.ToLower();

            //Se crea un objeto de tipo AnalizadorLexico para eliminar los stopwords de la consulta de usuario, Libreria utilizada:Lucenet.Net
            AnalizadorLexico analizador = new AnalizadorLexico();

            //Obtencion de palabras clave de la consulta
            System.Collections.ArrayList ListKeyWords = new System.Collections.ArrayList();
            ListKeyWords = analizador.getKeywords(consulta, tipoAnalizador);

            //Cargar la Ontologia
            OntologiaDominio ontologia = new OntologiaDominio();

            ontologia.Model = ontModel;

            //Se almacenan los conceptos e individuos de la ontologia en la BD para su posterior uso
            //ontologia.AlamcenarConceptos(Conceptos);

            //identificacion de Conceptos
            ontologia.termsIdentification(ListKeyWords);
            System.Collections.ArrayList lcc = ontologia.ListConceptoCompuesto;
            System.Collections.ArrayList lcs = ontologia.ListConceptoSimple;
            lcc.AddRange(lcs);                                                   //Union de conceptos simples y compuestos
            System.Collections.ArrayList lcr = ontologia.ListRestrictionConceps; //conceptos de restricciones
            //Se extraen conceptos de similitud entre la combinatoria de pares de concepto de lcc
            //System.Collections.ArrayList lce = ontologia.similarityBetweenConcepts(lcc);

            //Añadimos los conceptos hijos e instancias para hacer la consulta más precisa

            string consultaExpandida = ontologia.CadenaExpandConsult;

            foreach (string concepto in lcc)
            {
                List <OntologyConceptCopy> hijos = new List <OntologyConceptCopy>();
                hijos = ontologia.ObtenerConceptosHijos(ontModel, concepto, tipoAnalizador, strontologia);
                foreach (OntologyConceptCopy oncp in hijos)
                {
                    if (!consultaExpandida.Contains(oncp.OntCopyNameConcept))
                    {
                        consultaExpandida += " + " + oncp.OntCopyNameConcept;
                    }
                }
            }

            //string consultaExpandida = ontologia.CadenaExpandConsult;
            int pos = consultaExpandida.IndexOf("+");

            consultaExpandida = consultaExpandida.Substring(pos + 1);

            //foreach (string similitudConcept in lce)
            //{
            //    if (similitudConcept != "" && !lcc.Contains(similitudConcept) && !lcr.Contains(similitudConcept))
            //        consultaExpandida += " + " + similitudConcept;
            //}

            string auxConsultaExpandida = consultaExpandida;

            auxConsultaExpandida = auxConsultaExpandida.Replace("|", " ");
            auxConsultaExpandida = auxConsultaExpandida.Replace(")", " ");
            auxConsultaExpandida = auxConsultaExpandida.Replace("(", " ");
            auxConsultaExpandida = auxConsultaExpandida.Replace("+", " ");
            auxConsultaExpandida = auxConsultaExpandida.Replace("     ", ",");
            auxConsultaExpandida = auxConsultaExpandida.Replace("    ", ",");
            auxConsultaExpandida = auxConsultaExpandida.Replace("   ", ",");
            auxConsultaExpandida = auxConsultaExpandida.Replace("  ", ",");
            auxConsultaExpandida = auxConsultaExpandida.Replace(" ", ",");

            string[]  token = auxConsultaExpandida.Split(',');
            ArrayList listKeywordsConsExp = new ArrayList();

            listKeywordsConsExp.AddRange(token);
            listKeywordsConsExp.RemoveAt(0);

            consultaExpandida  = consultaExpandida.Replace("_", " ");
            consultaExpandida += ontologia.ConceptSynonym;

            //Finalmente le añadimos los términos que no se encontraron en la ontología
            //Primero se hace una copia en minusculas para comparar con los términos originales en minusculas y así no repetir concepto
            System.Collections.ArrayList consultaExpandidaTemp = new System.Collections.ArrayList();
            consultaExpandidaTemp.AddRange(listKeywordsConsExp);
            int i = 0;

            foreach (string terminoexp in listKeywordsConsExp)
            {
                consultaExpandidaTemp[i] = terminoexp.ToLower();
                i++;
            }
            foreach (string termino in ListKeyWords)
            {
                if (!consultaExpandidaTemp.Contains(termino.ToLower()))
                {
                    consultaExpandida += " &" + termino;
                }
            }

            //Retornar la cadena de consulta expandida
            return(consultaExpandida);
        }