<jupyter_start><jupyter_text>Librerias Importar<jupyter_code>import sys
# insert at 1, 0 is the script path (or '' in REPL)
sys.path.insert(1, '../Scripts')
import pandas as pd 
from ontologia import *
import ast

#Lectura de lemas 
import json
with open('./Resumenes/diccionario-lemas.json', 'r') as f:
    diccionario_lemas = json.loads(f.read())<jupyter_output><empty_output><jupyter_text>Carga de Resumenes con vocabulario y Lemas Añadidos- Ejecutar a partir de aqui ya que son dataset limpio y de prueba<jupyter_code>#Carga de datos
resumenes_docentes = pd.read_csv("./Resumenes/ResumenesDocentes.csv", index_col=0)
resumenes_estudiantes = pd.read_csv("./Resumenes/ResumenesEstudiantes.csv", index_col=0)
#Revision rapida de los datos
resumenes_docentes.head(2)<jupyter_output><empty_output><jupyter_text>Creando Instancias Completas<jupyter_code>def instanciar_universidad(nombre, id_u, nombre_u):
    universidad = Universidad(nombre)
    universidad.set_id_universidad(id_u)
    universidad.set_nombre_universidad(nombre_u)
    
def instanciar_viis(nombre, id_viis, nombre_viis):
    viis = VIIS(nombre)
    viis.set_id_VIIS(id_viis)
    viis.set_nombre_VIIS(nombre_viis)
    
def instanciar_convocatoria(nombre, id_convocatoria, nombre_convocatoria, tipo, anio):
    convocatoria = Convocatoria(nombre)
    convocatoria.set_id_convocatoria(id_convocatoria)
    convocatoria.set_nombre_convocatoria(nombre_convocatoria)

def instanciar_facultad(nombre, id_facultad, nombre_facultad):
    facultad = Facultad(nombre)
    facultad.set_id_facultad(id_facultad)
    facultad.set_nombre_facultad(nombre_facultad)

def instanciar_departamento(nombre, id_departamento, nombre_departamento):
    departamento = Departamento(nombre)
    departamento.set_id_departamento(id_departamento)
    departamento.set_nombre_departamento(nombre_departamento)
    
def instanciar_programa(nombre, id_programa, nombre_programa):
    programa = Programa(nombre)
    programa.set_id_programa(id_programa)
    programa.set_nombre_programa(nombre_programa)

def instanciar_investigador(nombre, id_investigador, nombres_investigador, codigo_investigador):
    investigador = Investigador(nombre)
    investigador.set_id_investigador(id_investigador)
    investigador.set_nombres_investigador(nombres_investigador)
    investigador.set_codigo_investigador(codigo_investigador)

def instanciar_proyecto(nombre, id_investigacion, titulo, resumen, estado, tipo, palabras_clave):
    proyecto_investigacion = Proyecto_investigacion(nombre)
    proyecto_investigacion.set_id_proyecto_investigacion(id_investigacion)
    proyecto_investigacion.set_titulo_proyecto_investigacion(titulo)
    proyecto_investigacion.set_resumen_proyecto_investigacion(resumen)
    proyecto_investigacion.set_estado_proyecto_investigacion(estado)
    proyecto_investigacion.set_tipo_proyecto_investigacion(tipo)
    proyecto_investigacion.set_palabras_clave(palabras_clave)
    return proyecto_investigacion
    
def instanciar_palabra(nombre_palabra, descripcion_palabra):
    palabra = Palabra(nombre_palabra)
    palabra.set_lema_palabra(nombre_palabra)
    if(descripcion_palabra != None):
        for descripcion in descripcion_palabra:
            palabra.set_descripcion_palabra(descripcion)
    else:
        palabra.set_descripcion_palabra(nombre_palabra)
    return palabra

def instanciar_grupo_investigacion(nombre, id_grupo, nombre_grupo):
    grupo_investigacion = Grupo_investigacion(nombre)
    grupo_investigacion.set_id_grupo_investigacion(id_grupo)
    grupo_investigacion.set_nombre_grupo_investigacion(nombre_grupo)    
    
def instanciar_linea_investigacion(nombre, id_linea, nombre_linea):
    linea_investigacion = Linea_investigacion(nombre)
    linea_investigacion.set_id_linea_investigacion(id_linea)
    linea_investigacion.set_nombre_linea_investigacion(nombre_linea)    
      
len(diccionario_lemas)<jupyter_output><empty_output><jupyter_text>Funcion Crear Instancia Proyectos y sus Palabras<jupyter_code>#Instancias de Palabras
# list(ontologia.Proyecto_investigacion.instances())
def instanciar_dataset(dataset):
    i = len(list(ontologia.Proyecto_investigacion.instances()))
    for index, row in dataset.iterrows():
        #if(index > 1): break

        #Instanciamos el PI
        proyecto = instanciar_proyecto("pi"+str(int(index+i)) , int(index+i), row['titulo'], row['resumen'], row['estado'], row['convocatoria'], row['palabras_clave'])
        #Instanciamos Palabras Y Relacionamos
        vocabulario = ast.literal_eval(row['vocabulario'])
        for palabra in vocabulario:
            descripciones = diccionario_lemas.get(palabra) 
            palabra_instancia = instanciar_palabra(palabra, descripciones)
            proyecto.relation_pi_tiene_palabra(palabra_instancia)
for ere in None:
    print(ere)
diccionario_lemas.get('feef')<jupyter_output><empty_output><jupyter_text>- **Proyectos Docentes**<jupyter_code>instanciar_dataset(resumenes_docentes)
resumenes_docentes['palabras_clave'][2]<jupyter_output><empty_output><jupyter_text>- **Proyectos - Estudiantes**<jupyter_code>instanciar_dataset(resumenes_estudiantes)
ontologia.save()<jupyter_output><empty_output><jupyter_text>Recuperacion con OR2<jupyter_code>palabras = ontologia.Palabra.instances()
len(palabras)
palabras[1]
ontologia.Palabra.get_descripcion_palabra
words=['gestor',
'conocimiento'
'sgbd',
'debilmente',
'postgresql'
'sparql',
'umayux',
'tacito',
'semantica',
'motor',
'rdf',
'explicito']

words_instances=[]

for palabra in palabras:
    descripciones = ontologia.Palabra.get_descripcion_palabra(palabra)
    for descripcion in descripciones:
        if descripcion in words:
            words_instances.append(palabra)

docs = []
for word in words_instances:
    for doc in word.palabra_describe_pi:
        docs.append(doc)
docs
docs[0].get_titulo_proyecto_investigacion()
palabra[1].get_<jupyter_output><empty_output><jupyter_text>Funcion Eliminar Individuals<jupyter_code># Funcion destruir Individual
def destruir_individual(individual):
    destroy_entity(individual)
# Eliminar TODOS los inviduals
for individual in list(ontologia.individuals()):
    destruir_individual(individual)
ontologia.Palabra.get_descripcion_palabra(palabras[1])
# Eliminar Individuals Proyecto de Investigacion
for individual in list(ontologia.Proyecto_investigacion.instances()):
    destruir_individual(individual)
#Eliminar Individuals Palabras
for individual in list(ontologia.Palabra.instances()):
    destruir_individual(individual)
list(ontologia.Proyecto_investigacion.instances())
#Revisar Todos Individuals
list(ontologia.individuals())
#Revisar Individuals Proyectos Investigacion
list(ontologia.Proyecto_investigacion.instances())
ontologia.save()<jupyter_output><empty_output><jupyter_text>Funcion Eliminar Individuals<jupyter_code># Funcion destruir Individual
def destruir_individual(individual):
    destroy_entity(individual)
# Eliminar TODOS los inviduals
for individual in list(ontologia.individuals()):
    destruir_individual(individual)
# Eliminar Individuals Proyecto de Investigacion
for individual in list(ontologia.Proyecto_investigacion.instances()):
    destruir_individual(individual)
#Eliminar Individuals Palabras
for individual in list(ontologia.Palabra.instances()):
    destruir_individual(individual)
list(ontologia.Proyecto_investigacion.instances())
#Revisar Todos Individuals
list(ontologia.individuals())
#Revisar Individuals Proyectos Investigacion
list(ontologia.Proyecto_investigacion.instances())
ontologia.save()<jupyter_output><empty_output><jupyter_text>TEST RELACIONAR OBJECT PROPERTY INSTANCES<jupyter_code>list(ontologia.individuals())
palabra = Palabra("Perro")
palabra2 = Palabra("Gato")
#proyecto = ontologia.Proyecto_investigacion.instances()
proyecto1 = proyectos_investigacion[370]
proyecto1.get_tipo_proyecto_investigacion()
palabras = ontologia.Palabra.instances()
palabra = palabras[1]
palabra
proyecto1.pi_tiene_palabra = [palabra]

#palabra.palabra_describe_pi = [proyecto1]

print(proyecto1.is_a)
print(proyecto1.storid)
print(proyecto1.get_properties())
print(list(proyecto1.get_inverse_properties()))
print(proyecto1.pi_tiene_palabra)

print(palabra.is_a)
print(palabra.storid)
print(palabra.get_properties())
print(list(palabra.get_inverse_properties()))
print(palabra.palabra_describe_pi)
print(ontologia.palabra_describe_pi.inverse)
print(ontologia.palabra_describe_pi.domain)
print(ontologia.palabra_describe_pi.range)
print("###################################")
print(ontologia.pi_tiene_palabra.inverse)
print(ontologia.pi_tiene_palabra.domain)
print(ontologia.pi_tiene_palabra.range)

foo = list(ontologia.pi_tiene_palabra.get_relations())
foo
list(ontologia.palabra_describe_pi.get_relations())<jupyter_output><empty_output><jupyter_text>Final del TEST  Funcion Eliminar Individuals<jupyter_code># Funcion destruir Individual
def destruir_individual(individual):
    destroy_entity(individual)
# Eliminar TODOS los inviduals
for individual in list(ontologia.individuals()):
    destruir_individual(individual)
# Eliminar Individuals Proyecto de Investigacion
for individual in list(ontologia.Proyecto_investigacion.instances()):
    destruir_individual(individual)
#Eliminar Individuals Palabras
for individual in list(ontologia.Palabra.instances()):
    destruir_individual(individual)
list(ontologia.Proyecto_investigacion.instances())
#Revisar Todos Individuals
list(ontologia.individuals())
#Revisar Individuals Proyectos Investigacion
list(ontologia.Proyecto_investigacion.instances())
ontologia.save()<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.09257130916309686, 'fraction_numerical': 0.0028210218367986624, 'mean_word_length': 7.6624434389140275, 'pattern_counts': {'":': 0, '<': 45, '<?xml version=': 0, '>': 46, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '11', 'dir': 'jupyter-structured-clean-dedup', 'id': '364970', 'license': 'Apache-2.0', 'n_tokens_mistral': 3657, 'n_tokens_neox': 3560, 'n_words': 476, 'path': 'Notebooks/InstanciasProyectos.ipynb', 'repo_name': 'TrabajoGradoMotorBusqueda/Ontologia', 'size': '9571'}