Llevo años hablando en clase de ontologías, grafos de conocimiento y de lo importante que es modelar bien la información, y siempre acabamos en la pizarra con dibujitos raros que prometo que tienen sentido. Así que en esta entrada vamos a bajar a tierra el tema usando Protégé, que es uno de esos programas feos (por no decir antipáticos) pero bastante imprescindibles para construir ontologías en la vida real.
Esto no va de hacer un manual exhaustivo de Protégé (para eso ya está el famoso “manual de pizzas” y miles de tutoriales en YouTube), sino que te suene qué es una ontología en Protégé, qué pinta tienen las clases, las propiedades y las restricciones, y que puedas seguir un ejemplo sencillo sin morir en el intento. Con eso, para una asignatura como esta, vamos más que servidos.
Qué es Protégé y para qué lo vamos a usar
Protégé es un editor de ontologías desarrollado por la Universidad de Stanford que permite trabajar con OWL y RDF(S) sin tener que escribir todo a mano en sintaxis rara. Te da una interfaz gráfica donde vas definiendo clases, propiedades y axiomas, y luego puedes pasarle un razonador por encima para comprobar si lo que has hecho tiene sentido o has creado un pequeño monstruo lógico.
En este contexto, lo vamos a usar como laboratorio: un sitio donde experimentar con cómo pasar de “tengo un dominio en la cabeza” a “tengo una ontología que una máquina puede interpretar mínimamente bien”. Nada de construir el próximo esquema de Google, sólo un modelo decente para entender el proceso.
Antes de abrir Protégé: decide de qué va tu ontología
Antes de lanzarte a crear clases como si no hubiera mañana, merece la pena dedicar cinco minutos a responder tres preguntas muy simples:
-
¿De qué va mi ontología (el dominio)?
-
¿Para qué la quiero (qué tipo de consultas debería responder)?
-
¿Qué no voy a modelar ahora para no complicarme la vida?
Si lo que quieres es aprender a construir el vocabulario relacionado con el dominio que te interesa, lo mejor es que leas este artículo que escribí hace años. En él cuento, de forma sencilla, los pasos que hay que dar para obtener un vocabulario especializado en una área temática concreta. Una vez que tengas los términos, solo falta vincularlos. Y eso es lo que hace una ontología.
Para esta entrada podríamos, por ejemplo, hacer una ontología mínima sobre la propia asignatura: asignaturas, estudiantes, profesorado y trabajos entregados (prefiero hacer esta primera ontología de algo sencillo, que todos conozcamos, para que resulte más sencilla su comprensión). No vamos a modelar toda la universidad, ni todos los grados, ni la vida académica completa del estudiante; sólo lo justo para hacer algunas preguntas interesantes.
Crear el proyecto en Protégé
Puedes trabajar con el editor de dos formas:
- O te lo descargas de aquí y lo instalas en tu ordenador. Es decir, trabajas en modo local.
- O trabajas en modo online conectándote a la versión WebProtégé.
Cuando abras Protégé, lo normal es crear un proyecto nuevo en OWL (OWL ontology);
-
Nuevo proyecto → OWL ontology.
-
Si estás en la versión en local te pedirá que elijas una IRI. Puedes poner, por ejemplo, algo tipo
https://blogs.ugr.es/tecweb/ontologias/curso2026. -
Guarda el archivo en una carpeta donde luego lo encuentres (si estás con la opción local).
A partir de ahí tendrás varias pestañas importantes: Classes, Object properties, Data properties, Individuals y alguna más donde viven los axiomas y las anotaciones.
Paso 1: sacar la lista de conceptos (clases)
Volvemos al ejemplo de la asignatura. Queremos modelar, como mínimo:
-
Asignatura
-
Estudiante
-
Profesor
-
Trabajo
Cuando hablamos de clases en una ontología, en realidad estamos hablando de categorías de cosas: conjuntos de individuos que comparten unas características mínimas. Asignatura, Estudiante o Trabajo no son “cosas concretas”, sino etiquetas para agrupar muchas instancias posibles que se parecen lo suficiente entre sí como para tratarlas igual en el modelo. Una vez tienes claras esas clases, ya puedes empezar a decir qué relaciones hay entre ellas y qué propiedades tiene cada una.
En la pestaña Classes irías creando algo como:
-
Persona-
Estudiante -
Profesor
-
-
Asignatura -
Trabajo
Con eso ya tienes el esqueleto de tu ontología.
Paso 2: definir relaciones (propiedades de objeto)
Ahora necesitamos contar cómo se relacionan esas clases entre sí. Aquí entran las Object properties. En una ontología, las object properties son simplemente relaciones entre individuos: conectan una cosa con otra cosa. Si digo que Estudiante01 matriculadoEn TecWeb2026, esa relación matriculadoEn es una propiedad de objeto que une un individuo de la clase Estudiante con un individuo de la clase Asignatura. A diferencia de las propiedades de datos, que van de un individuo a un valor literal (un número, una fecha, una cadena de texto), las propiedades de objeto siempre enlazan dos instancias de clases de la ontología.
Siguiendo el ejemplo, podríamos definir cosas como:
-
imparte(dominio:Profesor, rango:Asignatura) -
matriculadoEn(dominio:Estudiante, rango:Asignatura) -
entrega(dominio:Estudiante, rango:Trabajo)
En la pestaña Object properties creas cada propiedad, le das nombre, y en la parte de dominio y rango indicas qué clases conecta. Sólo con esto ya se puede empezar a razonar sobre quién puede hacer qué en tu pequeño mundo.
Además de decir qué clases conecta una propiedad de objeto, en OWL podemos indicar algunas características especiales que afectan a la inferencia. Por ejemplo, una propiedad funcional es aquella de la que sólo puede haber un valor por individuo (si TecWeb2026 tieneCoordinador JoseSenso y la propiedad tieneCoordinador es funcional, no puede haber dos coordinadores distintos a la vez). Una propiedad inversa funcional impone la restricción en sentido contrario: cada valor sólo puede pertenecer a un individuo, como ocurriría con algo tipo tieneNumeroExpediente si lo modeláramos como propiedad de objeto sobre un recurso “Expediente”.
También hay propiedades transitivas (si A precede B y B precede C, entonces A precede C), simétricas (si A esHermanoDe B, entonces B esHermanoDe A) o asimétricas (si A esHijoDe B, nunca será cierto que B esHijoDe A). Para una primera ontología en Protégé suele bastar con entender bien las funcionales, inversas y, como mucho, marcar alguna propiedad como transitiva o simétrica cuando el significado lo pida claramente.
Paso 3: añadir datos (propiedades de datos)
Por contraste, las data properties conectan un individuo con un valor literal: Estudiante01 tieneEmail «alguien@correo.ugr.es» o Trabajo1_TecWeb tieneCalificacion 9.5 usan propiedades que no llevan a otra cosa del modelo, sino a datos básicos como cadenas de texto, números o fechas.
-
tieneNombre(dominio:Persona, rango:xsd:string) -
tieneEmail(dominio:Persona, rango:xsd:string) -
tieneCalificacion(dominio:Trabajo, rango:xsd:decimal) -
tieneFechaEntrega(dominio:Trabajo, rango:xsd:dateTime)
Paso 4: poner un poco de disciplina (restricciones)
Hasta ahora sólo hemos dicho “existen estas cosas” y “se pueden relacionar así”. Si quieres que la ontología empiece a tener algo de carácter, necesitas restricciones mínimas:
-
Una
Asignaturadebería estar impartida por al menos unProfesor. -
Un
Trabajodebería estar relacionado con al menos unEstudiante.
En Protégé, esto se expresa con restricciones de cardinalidad y existenciales, del estilo “cada Asignatura tiene al menos un Profesor que la imparte”. No te preocupes por la notación formal la primera vez; céntrate en que la frase en lenguaje natural tenga sentido y luego tradúcela a la interfaz.
Paso 5: crear individuos y probar el modelo
Llega el momento de poner nombres propios: en la pestaña Individuals puedes crear instancias concretas de tus clases. Una instancia es un ejemplo concreto de una clase dentro de una ontología. En vez de un ejemplo genérico, vamos a usar directamente cosas de la asignatura.
Por ejemplo:
-
Un individuo
TecWeb2026de tipoAsignatura. -
Un individuo
BlogGrupoAde tipoRecursoWeb. -
Un individuo
Trabajo1_TecWebde tipoTrabajo. -
Un individuo
Estudiante01de tipoEstudiante. -
Un individuo
JoseSensode tipoProfesor.
Después puedes ir asignando propiedades entre ellos:
-
JoseSenso imparte TecWeb2026. -
Estudiante01 matriculadoEn TecWeb2026. -
Estudiante01 entrega Trabajo1_TecWeb. -
Trabajo1_TecWeb usaRecurso BlogGrupoA. -
Trabajo1_TecWeb implementaTecnologia CMS.
Aquí es donde se ve si todo lo anterior era razonable o si empiezan a salir cosas raras: si el modelo está bien montado, Protégé no debería quejarse de que un Trabajo use un RecursoWeb relacionado con la asignatura, ni de que un Estudiante entregue ese trabajo dentro de Asignatura. Si algo no encaja, el propio editor (o el razonador, en el siguiente paso) te lo hará saber.
Paso 6: encender el razonador y ver qué pasa
Una de las gracias de usar Protégé es poder lanzar un razonador (HermiT, Pellet, etc.) para ver si tu ontología es consistente.
-
Activa el razonador.
-
Deja que recalcule la jerarquía de clases.
-
Comprueba si aparecen clases “inconsistentes” o si hay individuos que acaban en sitios donde no esperabas.
Si algo está mal modelado, el razonador suele chivarse con alguna clase en rojo o avisos de que has creado algo imposible (al estilo “una asignatura que no puede tener profesor, pero a la vez debe tener al menos uno”).
Y ahora, ¿qué hago con esta ontología?
A estas alturas, con que entiendas el flujo completo ya me doy por satisfecho. Deberías tener claro el proceso para:
-
Decidir el dominio y el objetivo.
-
Definir clases.
-
Añadir propiedades de objeto y de datos.
-
Poner algunas restricciones sensatas.
-
Crear individuos y probar.
-
Pasar el razonador y arreglar lo que haga falta.dte.us+1
Si quisieras ir más allá, a partir de aquí podrías:
-
Publicar la ontología en la web.
-
Vincularla con otros vocabularios ya existentes.
-
Usarla como base para consultas SPARQL sobre datos anotados con ella.
Para seguir trasteando
Si después de esto Protégé no te da demasiada pereza, te recomiendo echar un ojo a algún tutorial paso a paso (hay varios en español bastante decentes) y a ejemplos clásicos como el de las pizzas, que usan justo para enseñar OWL desde cero. También es buena idea mirar catálogos de vocabularios como BARTOC para ver cómo otra gente modela dominios parecidos al tuyo antes de reinventar la rueda.
Si llegas hasta aquí sin odiar Protégé, ya has hecho buena parte del camino. A partir de este punto, todo es iterar: probar, romper la ontología, mirar qué dice el razonador y volver a empezar. Si en algún momento te ves tentado de tirar el portátil por la ventana, respira: incluso así estarás entendiendo muy bien cómo funciona esto.




Deja una respuesta