jena owl protege owl-api

API de OWL, API de Jena, API de Protege, cuál usar



owl-api (1)

Aunque esta pregunta es probablemente fuera de tema para StackOverflow, sigue siendo una pregunta importante en general, por lo que aquí hay algunas ideas generales acerca de la diferencia entre la API de Jena y la API de OWL que, incluso si no te hacen preferir una sobre la por otro lado, podría darle una mejor idea de lo que está haciendo en ambos casos. Lo estoy marcando como wiki de la comunidad para que otros también puedan actualizar esto.

La relación entre OWL y RDF

RDF es un formato de representación basado en gráficos. Un gráfico RDF es un gráfico dirigido cuyos nodos son Recursos (que pueden ser anónimos o identificados por IRI) y Literales, y cuyos bordes son enlaces dirigidos identificados por IRI. Esto es sorprendentemente simple, pero debido a que los identificadores son IRI y con frecuencia pueden ser deferentes, también son increíblemente útiles. Realmente no hay mucho más que decir sobre RDF, porque esto es todo lo que hay que hacer. Es muy flexible y puedes representar casi cualquier cosa.

OWL, aunque está diseñado para ser utilizado en la Web Semántica y, por lo tanto, con datos RDF, es realmente un lenguaje lógico que solo incidentalmente está relacionado con RDF. Una ontología OWL consiste en un conjunto de axiomas OWL, algunos de los cuales declaran que ciertos identificadores se refieren a individuos, algunos de los cuales afirman relaciones entre individuos (y datos no individuales, tales como literales), algunos de los cuales expresan la estructura de clases, y así. La utilidad de OWL surge del hecho de que, al igual que RDF, utiliza IRI como identificadores, pero la estructura lógica podría existir completamente separada de RDF. De hecho, aunque las ontologías OWL se pueden serializar usando RDF y, de hecho, esta es probablemente la serialización más utilizada, OWL también se puede serializar en OWL / XML, la Sintaxis Funcional de OWL, la Sintaxis OWL de Manchester y cualquier otro formato de serialización que alguien inventa. Estos formatos tienden a centrarse en las construcciones de nivel OWL, y es más claro que una ontología es un conjunto de axiomas.

La API de Jena está centrada en RDF

La API de Jena está firmemente arraigada en RDF. El concepto básico es el Model (que es más primitivo que OntModel , que se usa para hacer un trabajo más complicado relacionado con OWL) que proporciona una API conveniente para construir gráficos RDF. Usando Modelos, creará recursos, agregará propiedades, etc. Jena también incluye un razonador basado en reglas que es bastante útil para trabajar con gráficos RDF.

Ahora, OWL se puede serializar utilizando RDF, por lo que es posible crear una capa de envoltura sobre un gráfico RDF para que pueda decir "cree para mí la clase que es la intersección de A y B" y recupere el recurso que identifica esa clase y agregando de manera transparente a la clase, independientemente de los tripletes RDF que se necesiten en la serialización OWL para afirmar que la nueva clase es (equivalente a) la intersección de A y B. Esto es lo que hace la API de Jena OntModel. Lo hace de manera genérica, lo que significa que Jena puede manejar otros lenguajes de ontología que también pueden ser serializados en RDF. Jena OntModels, al momento de escribir, solo es compatible con OWL1; Las nuevas construcciones introducidas en OWL2 aún no son compatibles.

El hecho de que las construcciones de nivel OWL en Jena sean simplemente envoltorios sobre la serialización RDF significa que el razonamiento basado en reglas está limitado en lo que puede lograr. En particular, los razonadores basados ​​en reglas de Jena para OWL están lógicamente incompletos (es decir, no pueden inferir todo lo que las especificaciones de OWL dicen que debería inferirse). Sin embargo, todavía les va bastante bien para el trabajo del día a día. Jena proporciona una interfaz Reasoner, que permite utilizar otros razonadores (posiblemente no basados ​​en reglas), como Pellet .

La API de OWL está centrada en OWL

La API de OWL está centrada en OWL, y prácticamente no tendrá que preocuparse por RDF (aparte de identificar cosas por IRI y crear literales según corresponda). Usando la API OWL, en realidad tratará una ontología como un conjunto de axiomas en lugar de como un conjunto de triples que suceden para codificar algunos axiomas. Si ya estás familiarizado con las especificaciones de OWL, y te sientes cómodo hablando de cosas como ObjectPropertyAssertions, entonces puedes encontrar la API de OWL un poco más natural.

La API de Protégé-OWL también está centrada en OWL y RDF (S)

De la guía del programador API Protégé-OWL :

La API de Protege-OWL es una biblioteca de código abierto de Java para el lenguaje de ontología web (OWL) y RDF (S). La API proporciona clases y métodos para cargar y guardar archivos OWL, para consultar y manipular modelos de datos OWL y para realizar razonamientos basados ​​en motores de descripción lógica. Además, la API está optimizada para la implementación de interfaces gráficas de usuario.

La página principal de la API Protégé-OWL también tiene algunos diagramas agradables de las clases que proporciona. El más completo de estos muestra que hay clases para ambas entidades, RDF (S) y OWL.

Protégé-OWL (la herramienta, no la API) es un editor gráfico de ontologías construido en la parte superior de la API de Protégé-OWL. Puede develop complementos para él, que podrían ser la mejor alternativa en su caso.

Estoy tratando de implementar una aplicación basada en eclipse que trabaje con ontologías. (Mi tema es la anotación semántica). Necesitaré mostrar la ontología al usuario (como un árbol) y establecer vínculos entre las clases de ontología y algunos esquemas.

Como solo tengo habilidades de programación básicas, estoy un poco abrumado en este momento, en cuanto a cómo diseñar la aplicación ... 1. Pregunta: ¿Qué API usar? Encontré la API de OWL y la API de Jena. En una de las publicaciones ( ¿Hay alguna biblioteca que pueda cambiar y actualizar fácilmente los archivos OWL? ) Michael dijo que "OWLAPI sobre Jena. Jena tiene soporte OWL, pero no está diseñado para OWL, lo que lo hace un poco difícil de usar". Como ves esto? 2. Adicionalmente, también existe la API Protégé. A primera vista, parece ser más adecuado para mí, porque ya proporciona algunas utilidades GUI, etc. Pero estoy un poco confundido: al intentar encontrar más información, encontré este http://protegewiki.stanford.edu/wiki/P4APIOverview . Allí dice "Trabajo en progreso", pero la página se modificó por última vez en 2009. ¿Cómo dar sentido a esto? ¿Alguien ha trabajado con Protégé API y puede compartir sus experiencias?

¡Muchas gracias por adelantado!