Skip to content

Instalar la API de ProtegeOWL para Eclipse

1 abril 2009

protegelogo

La API de ProtegeOWL nos va a permitir manejar ontologías y realizar operaciones sobre ellas de una manera muy cómoda, muy rápida y muy eficiente. Además tendremos la certeza de que todas las ontologías que diseñemos con esta API serán perfectamente válidas para Protégé. Otra ventaja, es que podremos diseñar las ontologías directamente en el entorno gráfico de Protégé y luego manipularlas desde nuestra aplicación Java.

¿El mayor incoveniente? Sin duda alguna el tamaño. Sólo la API ocupa 40 MEGAS!!! y encima son 40 megas repartidos entre 3000 ficheros .java y .class. Por tanto Eclipse tarda un rato en actualizar el workspace cada vez que limpieis el proyecto.

Esto se debe a que las dependencias en el código fuente de Protégé son muy grandes y aunque nosotros sólo vayamos a utilizar la API de ProtegeOWL, necesitamos también importar Protege-core, es decir, todo el código fuente de Protégé. Además necesitaremos añadir a nuestro proyecto las librerías necesarias para que todo el código compile, como por ejemplo la librería de Jena.

Recapitulemos. ¿Qué es lo que necesitamos para tener nuestra API de ProtégéOWL lista para utilizarla?

  • Código fuente de ProtegeOWL API
  • Código fuente de Protege-core
  • Librerías necesarias (.jar)

Todo lo que veamos en este artículo está destinado a utilizar la API de la versión 3.x de Protégé. La versión 4.0 se encuentra todavía en desarrollo y aunque ya hay manuales para probarla, seguiremos con la 3.x

Descargar el código fuente con Subversion

Lo primero que necesitamos es obtener el código fuente de Protégé-core y de Protege-OWL. Para ello nos conectaremos a su repositorio de subversion y lo descargaremos de ahí. No os voy a explicar en este post qué es subversion o cómo utilizarlo, doy por supuesto que todos tenemos un cliente de subversion configurado y operativo 😉

NOTA: Al final de la entrada, tenéis los enlaces para descargar el código fuente empaquetado en ZIP, por si preferís no usar Subversion.

ACTUALIZADO: En las últimas revisiones del repositorio parece que faltan algunas clases, por tanto os recomiendo que descarguéis la API empaquetada en ZIP, al menos hasta que arreglen o actualicen el repositorio.

Yo personalmente utilizo subversion mediante comandos en la terminal, me resulta más comodo y rápido. Por tanto todas las operaciones que realicemos para obtener las APIs, las haré mediante consola.

Vamos a crear una carpeta y dejarla configurada para que actúe bajo subversion:

svnadmin create /Users/Rekeb/Desktop/svnProtege/

Ahora en el escritorio tenemos nuestra carpeta preparada para soportar el sistema de versiones. Lo siguiente será obtener Protege-core y Protege-OWL.

Antes de empezar debemos tener en cuenta una cosa. Tanto Protege-core como Protege-OWL los obtendremos cada uno en un directorio distinto y una vez que tengamos los dos, tendremos que mezclarlos, de esta forma tendremos en una misma ruta ambas APIs. No os preocupeis, es extremadamente sencillo ya que ambos comparten la misma raiz de directorios, ahora en un momento veremos cómo lo hacemos.

Obtenemos Protege-core:

Entramos en la carpeta que hemos creado antes y creamos una nueva carpeta llamada: Protege-core. Vamos a descargar ahí todo el repositorio de Protege-core. Para ello ejecutamos el siguiente comando:

svn co http://smi-protege.stanford.edu/repos/protege/protege-core/trunk/src/ Protege-core/

Una vez descargado (tarda un rato), vamos a descargar Protege-OWL

Obtenemos Protege-OWL:

Creamos una nueva carpeta dentro de svnProtege que se llamará: Protege-OWL. Descargaremos aquí todo el código de la API de Protege-OWL. Ejecutamos el siguiente comando:

svn co http://smi-protege.stanford.edu/repos/protege/owl/trunk/src/ Protege-OWL/

En este momento ya tenemos ambos directorios con ambas APIs. Ahora sólo nos queda mezclar ambos directorios en uno solo. Si navegamos un poco por ellos vemos que ambos tienen los mismos directorios inciales:

  • ../Protege-OWL/edu/stanford/smi/protegex/…
  • ../Protege-core/edu/stanford/smi/protege/…

Simplemente tendremos que hacer que de ../edu/stanford/smi/ cuelguen ambas carpetas y todos sus subdirectorios: /protegex/..   y  /protege/..    (Copiar y pegar de toda la vida…)

Yo he trasladado todo el contenido de ../Protege-core/edu/stanford/smi/ a ../Protege-OWL/edu/stanford/smi/  y el resultado es este:

dirprotege

Esto es más largo de contar que de hacer, ya veis que es muy sencillo. Bien pues en este momento, ya tenemos nuestra API en un sólo directorio y respetando la jerarquía de directorios que necesita cada API. Por tanto el directorio Protege-core, podemos eliminarlo sino nos interesa que esté ahi. A partir de ahora nos olvidaremos del repositorio svn y utilizaremos el directorio Protege-OWL como un directorio normal.

Descargar las librerías necesarias con Subversion

A parte del código fuente, Protege necesita algunas librerías para completar todas las dependencias, estas librerías son, por ejemplo las de Jena. Si tenemos instalada la aplicación de Protege, podemos navegar hasta el directorio lib y copiarlas de ahí. Sino lo tenemos instalados, podemos descargar estas librerías de sus repositorios de SVN.

Volvemos a nuestra carpeta svnProtege y creamos dos nuevas carpetas más: lib1 y lib2. Después mezclaremos ambas carpetas en una carpeta llamada lib. Ahora veremos cómo y porqué.

Obtenemos Las librerías necesarias para Protege-core:

svn co http://smi-protege.stanford.edu/repos/protege/protege-core/trunk/lib/ lib1/

Obtenemos Las librerías necesarias para Protege-OWL:

svn co http://smi-protege.stanford.edu/repos/protege/owl/trunk/lib/ lib2/

Ahora simplemente, copiamos los .jar que hay en lib1/ a lib/ y copiamos los .jar que hay en lib2/ a lib/ .Os pedirá que sobreescribais un .jar, no hay problema es el mismo en ambos directorios.

fiuffffff Parece que ya está todo lo que necesitamos para irnos a eclipse y poder empezar a usar la API.

Configurar la API en Eclipse

Vamos a necesitar nuestras carpetas de Protege-OWL/ y lib/, las que hemos creado antes, que están dentro de svnProtege/, asi es que tenedlas a mano; pero primero abramos Eclipse.

Creamos un proyecto nuevo con las opciones comunes y las que nos interesen. (a elección de cada un@)

Lo siguiente que vamos a hacer es copiar la carpeta lib/ y Protege-OWL/ dentro del directorio de nuestro proyecto. En nuestro Workspace, Eclipse habrá creado una carpeta con el nombre que le hayamos dado al proyecto. Pues dentro de esa carpeta copiaremos la carpeta lib/ y la carpeta Protege-OWL/. Ni que decir tiene, que para realizar esta copia hemos de ir a nuestro explorador de archivos de SO, no hace falta hacerlo desde Eclipse 😉

Una vez hayamos copiado ambas carpetas, volvemos a Eclipse y Refrescamos el proyecto. Las dos carpetas nos tienen que aparecer ahora en la vista Package Explorer.

Sólo nos quedan un par de pasos más y estaremos listos.

En Eclipse, vamos a las propiedades de nuestro proyecto y vamos al Apartado Java Build Path.

Haremos lo siguiente:

  • En la pestaña Source, hacemos click en Add Folder… y buscamos la carpeta Protege-OWL que habíamos añadido al proyecto, la seleccionamos y hacemos click en OK
  • En la pestaña Libraries, añadiremos todas las librerías almacenadas en lib/. Para ello presionamos el botón Add JARs… Seleccionamos nuestro proyecto, el directorio lib/ y marcamos todos los .jar

Y listo, eso es todo, ahora simplemente os queda esperar un rato hasta termine de compilarse todo el proyecto.

NOTA: En ocasiones, al importar el nuevo código fuente de los repositorios de subversion, el proyecto es incapaz de compilar, pq no es capaz de resolver todas las dependencias. Tendremos que buscarnos un poco las castañas en esta ocasión para conseguir compilar todo de forma correcta. Eso sí, los warnings os va a ser imposible quitarlos todos, en fin…

Si los repositorios SVN no compilan o no queremos utilizar subversion:

Los repositorios SVN no siempre compilan y hay ocasiones en las que podemos solucionarlo fácilmente y otras en las que por la razón que sea han eliminado ciertas clases y sin esas clases nos va a resultar imposible compilar el proyecto. En estas ocasiones, lo mejor es descargarse el código fuente empaquetado en un fichero ZIP. Esto nos asegura que el código fuente que hay ahí dentro, está probado y funciona perfectamente ya que, normalmente, hará referencia a la última versión estable de Protégé, cuyos binarios son los que se distribuyen actualmente.

Por tanto, si el código que hemos obtenido de los repositorios SVN no compila y somo incapaces de que compile (no os preocupéis, no es culpa vuestra), descargamos los fuentes de protege comprimidos en ZIP, y llevamos a cabo las mismas operaciones que en el punto de Descargar el codigo fuente con Subversion, con el objetivo de tener una única carpeta Protege-OWL con los fuentes de Protege-core y Protege-OWL. Y seguimos los pasos mencionados anteriormente.

Las librerías necesarias (.jar) ya vienen dentro de la API empaquetada, dentro de la carpeta lib/, tanto de Protege-core como de Protege-OWL

Los fuentes comprimidos, podéis descargarlos de la página de descargas oficial de Protege | Download Protege Software

Recordad descargar los de la versión 3.x de Protege 😉

Otro método para instalar la API de Protege-OWL

El equipo de desarrollo de Protege, ha creado un wiki dónde nos dan información para instalar la API de Protege. Es un proceso algo distinto al que os describo aquí. El enlace es el siguiente:

ProtegeWiki | Compile Protege Sources in IDE

Anuncios
22 comentarios leave one →
  1. Isora permalink
    4 agosto 2009 21:19

    Hola, estoy empezando con el proyecto fin de carrera y tengo que usar el Protege, para la instalación de la Api en el Eclipse siguiendo los pasos, pero me dan 200 errores, alguno de ellos es AbstractSingleConceptWithConceptCollectionResultTask, creo que están relación con el DIG Reasoner, pero no sé como solucionar esto, mi tutora de proyecto quiere que use Jena. Si me pueden guiar un poco.

    Gracias

    • rekkeb permalink*
      8 agosto 2009 18:53

      Hola, no hace falta que instales toda la API de Protege para usar Jena. Jena es una librería que puedes descargarte de forma independiente a Protege y que te va a permitir manipular ontologías de una forma muy sencilla. De hecho la propia API de Protege utiliza Jena para realizar toda la gestión de ontologías.
      Prueba a descargarte la librería Jena y usarla en tu proyecto. En su página oficial tienes mucha documentación y ejemplos que te ayudarán a comenzar a manejar ontologías desde Java. (jena.sourceforge.net)
      Lo de los fallos en la compilación del proyecto es lo más normal. Sobre todo si te descargaste la API desde el repositorio de SVN, siempre cambian algo…
      Salu2

  2. Romero permalink
    16 marzo 2010 21:43

    Hola… Yo estoy trabajando con ontologias, ya cree mi ontologia en protege y tengo mi archivo .owl, ahora quiero proceder a trabajar con ese archivo manipularlo cargarlo desde java ; leerlo, agragar individuos, des una interfaz qe yo haga en java, ya se netbeans o eclipse, pero creo qe el primer paso es cargarla en memoria para trabajr con ella. como logro eso??

    • rekkeb permalink*
      17 marzo 2010 10:21

      Esa es la parte más simple del trabajo con ontologías 🙂
      En la entrada: https://rekkeb.wordpress.com/2009/04/08/crear-una-ontologia-owl-usando-la-api-de-protegeowl-34/
      está explicado cómo podemos crear una ontología desde cero. Para cargar tu fichero .owl que ya contiene toda la ontología, simplemente hay que utilizar el método:

      URI uri = //Aqui debes construir la URI con la ruta a tu fichero owl
      jModel = ProtegeOWL.createJenaOWLModelFromURI(uri.toString());

      El método createJenaOWLModelFromURI puede lanzar una excepción, asi es que ya sabes, try/catch.
      El Objeto URI no es necesario, puedes utilizar un simple String que contenga la ruta a tu fichero owl, pero esta ruta debe ser una uri completa, sino obtendrás una RuntimeException.
      Salu2

  3. romero permalink
    23 marzo 2010 19:34

    Hola gracias por tu ayuda…. yo estoy trabajando con otra .. no con la de protege owlapi… yo trabajo con la de owl-api ….. me pregunto si es la misma sintaxis???…. si tendras algunos ejemplos o informacion sobre eso. ya logre leer y guardar, pero quiero , agregar relaciones, clases ,subclases y asi… me podrias a yudar… de antemano muchas gracias… espero tu respuesta… saludos…

    • rekkeb permalink*
      24 marzo 2010 12:36

      Hola Romero, hace tiempo probé la api OWL-API, realmente es sencillo su uso, aunque como todo, requiere tiempo de adaptación. La sintaxis no es exactamente la misma, aunque sí es parecida en ocasiones.
      Recuerdo que en la web oficial de la API, tenian una gran cantidad de ejemplos y de documentación que te ayudaban a resolver las dudas que propones. Te remito a ella, para que eches un vistazo:
      http://owlapi.sourceforge.net/documentation.html

      Saludos!

      • Manuel permalink
        20 abril 2015 06:50

        Hola: He visto que existen varias API para el trabajo con ontologías.Según tu experiencia, cuál recomiendas para un trabajo amplio donde habrá que explotar el más mínimo recurso que brinda el lenguaje OWL.
        ¿Se puede trabajar con reglas desde JENA?, pregunto porque he visto que cuando te preguntan sobre esto tus respuestas son aplicando la API de Protege.
        Saludos.

  4. romero permalink
    15 abril 2010 17:00

    hola Muchas gracias.. gracias!!! saludos.

    sigo estudiandole, ahora , me encontre con el problema de que tengo que realizar una interfaz grafica en java desde la cual pueda hacer consultas y mover a placr la ontologia, qe api me recomiendas para realizar las consusltas y algun razonador en especial.

    tendras algun ejemplo ya realizado para guiarme,.

    Saludos Muchas gracias..!!!!

  5. romero permalink
    10 mayo 2010 21:22

    Hola.!! como estas? no se si aun revises este bloc pero solo qeria preguntar si sabes si exsite una api como OWL Viz, pero para java y en la interfaz qe estoy haciendo lograr mostrar el diagrama como lo hace OWLViz en protegé.

    gracias, espero tu respues..!! si me puedes ayudar.. Saludos XD

    • rekkeb permalink*
      11 mayo 2010 09:55

      Pues la verdad es que no conocía OWLViz, asi es que no puedo ayudarte en ese aspecto. Sorry!

  6. romero permalink
    11 mayo 2010 20:02

    A ok… Gracias.. yo tampoco puedo encontrar nada.. creo qe no hay.XD.

    Disculpa!!! ya realice toda una interfaz con la OWL-api para manejo de ontologias. pero ahora requiero hacer consultas a la ontologia, con SparQL, tendras documentacion sobre esto, o la forma de poderme ayudar, te lo agradeceria muchisimo, es mi Ultimo paso para terminar mi residencia y poder titularme..je. de antemano gracias!! Saludos

  7. romero permalink
    19 mayo 2010 00:51

    Hola como estas??Saludos..

    tengo Un problema.. estoy checando Consistency de una Ontologia. hasta ahora lo eh logrado solo con dos razonadore con Pellet y Hermit, trato de hacerlo con FaCT y no encuentro como hacerlo. podrias Ayudarme tantito en eso… Gracias.. de antemano..

    Saludos!!!

    • rekkeb permalink*
      19 mayo 2010 09:28

      Pues la verdad es que hace mucho que no uso FaCT. Cuando lo usé en su día, recuerdo que venía integrado en el propio Protegé. Creo que ahora lo distribuyen como un plugin a parte e incluso te dan los binarios para que ejecutes un servidor DIG. Aquí está la web de descargas:
      http://code.google.com/p/factplusplus/downloads/list

      Si vas a usar el servidor DIG, tienes que configurar en las preferencias de Protege, la URL y el puerto en el que va a enviar peticiones a dicho servidor.

      Creo que en ese aspecto no puedo ayudarte mucho mas 😉

      • romero permalink
        21 mayo 2010 20:11

        hola Ok.. Muchas Gracias.. La verdad si se me esta complicando un poco hacerlo con ese razonador FaCT++. ya qe necesita aparate de unas librerias nativas y no se como agragarlas a mi proyecto en Netbeans… Seguire Investigandole.

        Ahora solo Falta hacer consultas Para saber si esta Ontologia Cumple con su objetivo.(Las preguntas de competencia realizadas al principio.), pero , para esot necesito un lenguaje llamado SparQL. mas no se si la api qe manejo qe es la de OWL-api, soporte a este sparql.

        o si existe asi como un api . … tendras conociemto de esto. qe me pudieras ayudar, e integrarlo a mi sistemita java y desde ahi hacer consutas.

        de antemano muchas gracias por tu ayuda…

      • rekkeb permalink*
        24 mayo 2010 18:15

        Lo que sí sé es que Jena tiene un motor propio para SparQL, Jena Sparql Engine. Sé que a través de la librería Jena puedes hacer consultas SparQL, pero nunca lo he usado directamente.

  8. Sergio Zepeda permalink
    8 marzo 2011 20:30

    Muchas gracias por tu tutorial compañero muy claro paso a paso y de gran utilidad

  9. 14 junio 2011 22:51

    Hola de nuevo.

    He seguido ahora todo este proceso pero en Windows (ya continuaré con la otra forma cuando consiga hacer funcionar mi 3g en ubuntu de nuevo ¬¬). Y todo bien, pero se me queja en el createJenaOWLModel: the method refers to the missing type JenaOWLModel…
    Pero es que dentro del /lib ESTÁ jena.jar. La veo en el package explorer y en las librerías del build path.

    Pero además es que dentro de la carpeta Protege que dejamos hecha, esta
    src.edu.stanford.smi.protegex.owl.jena.JenaOWLModel.java;
    ¿No es eso lo que necesita? Aquí debe haber algo que no entiendo, seguro. :/

    Ayúdenme a ver la luz!

  10. wondersito permalink
    26 abril 2012 02:49

    quisiera importar una ontologia en otra, creo que con estas librerias puedo lograrlo, no se si tengas conocimiento al respecto … por cierto no pude instalarlas XD

    • rekkeb permalink*
      26 abril 2012 08:46

      Hola, echa un vistazo a la entrada que escribi sobre cómo gestionar los imports de las ontologías programaticamente: https://rekkeb.wordpress.com/2009/03/16/gestionar-imports-de-ontologias-protege-owl-api/

      😉

  11. primi permalink
    26 mayo 2014 19:28

    hola yo estoy trabjando en protege 4 quiero trabajar en netbeans se puede

    • rekkeb permalink*
      8 junio 2014 13:07

      Hola primi,

      Pues nunca he trabajo con NetBeans, pero si tienes la librería de protege en un .jar, deberías poder importarla sin problemas en cualquier IDE que uses 😉

Trackbacks

  1. Jess. Conocer qué reglas se están disparando. (Rules Fired) « Rekkeb's Blog

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: