• No se han encontrado resultados

Razonadores de Programación Lógica

A.2. Estudio Comparativo

A.2.3.2. Razonadores de Programación Lógica

A continuación se presentan los razonadores más conocidos para la programación lógica:

A.2.3.2.1. KAON2

KAON2 [105] posee un sistema de razonamiento híbrido que soporta SHIQ(D), un subconjunto de OWL-DL; fue desarrollado en Java por la Universidad de Manchester, la Universidad de Karlsruhe y el FZI. Entre sus características se encuentra proveer un motor de inferencia para el ingreso de consultas basadas en SPARQL, tener interfaz DIG y una API para gestión programática de OWL-DL y SWRL. También, implementa un módulo para recuperar instancias de ontologías desde bases de datos relacionales. KAON2 está disponible gratuitamente para propósitos de investigación y para fines académicos [50][88][106].

Figura A.7. Arquitectura de KAON2. (Fuente: adoptada de [107])

A.2.3.2.2. FLORA-2

Es un lenguaje avanzado orientado a objetos basado en conocimiento y un entorno completo para el desarrollo de aplicaciones. FLORA-2 [108] como lenguajes extiende el cálculo de predicados clásico con el concepto de objeto, clase y tipo, que han sido adaptados de la programación orientada a objetos. Por su parte, la aplicación de FLORA-

Inferencia de Relaciones entre Entidades de una Red Social en Línea

Anexo A

123 2 incluye agentes inteligentes, Web Semántica, creación de redes para base de conocimiento, gestión de ontologías, integración de información y mucho más [88][106].

A.2.3.2.3. TRIPLE

Es un lenguaje de consulta, inferencia y transformación para la web semántica. TRIPLE [109] proporciona soporte para RDF y para un subconjunto de OWL-Lite. Su sintaxis está basada en F-Logic y proporciona soporte para símbolos de función, tratamiento de la igualdad o negación por defecto, transformaciones, modelos (conjunto de estamentos RDF), y extensión sintáctica de lógica [50][106].

A.2.3.2.4. API de Razonamiento Jena

Jena [110] es un framework para construir aplicaciones de web semántica sobre modelos RDF. Jena a través de la interfaz Reasoner, posee la capacidad para conectarse con motores de inferencia y razonadores DL externos tipo plugin a través de una interface DIG. Tales motores son usados para obtener afirmaciones RDF adicionales los cuales son aplicadas desde alguna base RDF junto con alguna información opcional de la ontología y los axiomas y reglas asociadas con el razonador. Asimismo, Jena tiene su propio subsistema de inferencia que consiste en un motor híbrido con encadenamiento hacia- adelante (forward engine) y hacia-atrás (backward engine) utilizando el algoritmo RETE (algoritmo de reconocimiento de Patrones). En la distribución de Jena están incluidos un número predefinido de razonadores como son:

A.2.3.2.4.1. Razonador General de Reglas

Es un razonador general basado en reglas que puede inferir hechos utilizando encadenamiento hacia adelante, hacia atrás e híbrido. La estructura de las reglas está definida por una lista de antecedentes (body), una lista de consecuentes (head), un nombre para la regla (opcional) y una dirección que representa la forma en que se resuelve la regla.

A.2.3.2.4.2. Razonador RDF(S)

Jena incluye un razonador RDFS basado en reglas que implementa un subconjunto configurable de sentencias RDFS. Este razonador puede estar configurado para trabajar en tres modos diferentes:

Full: implementa axiomas RDFS y reglas cerradas. Este es uno de los modos más costosos debido a que los datos del grafo deben ser revisados para un posible uso de sus propiedades. También genera todas las aserciones de todos los recursos existentes en los datos.

Default: este omite los chequeos costosos realizados por el modo Full. Este modo no incluye todas las reglas axiomáticas.

Inferencia de Relaciones entre Entidades de una Red Social en Línea 124

Simple: solo maneja la transitividad cerrada de relaciones entre subclases y subpropiedades, las sentencias del dominio y el rango y las implicaciones de subPropertyOf y subClassOf. Además, se omiten todos los axiomas. Este modo es probablemente el más útil pero no es el predeterminado porque esta es la implementación menos completa del estándar.

A.2.3.2.4.3. Razonador OWL, OWL Mini y OWL Micro

El segundo mayor conjunto de razonadores suministrados con Jena es una implementación basada en reglas del conjunto OWL-Lite subconjunto de OWL-Full. La versión actual incluye un razonador OWL por defecto y dos configuraciones pequeñas y rápidas. Cada configuración se pretende que sea una implementación de un subconjunto de la semántica OWL-Full pero ninguna de ellas es completa.

Los razonadores Jena OWL pueden ser descritos como razonadores basados en instancias. Este enfoque está en contraste con los razonadores más sofisticados de lógica descriptiva los cuales trabajan con expresiones de clase y pueden ser menos eficientes al manejar instancias de datos, pero más eficientes con expresiones de clases complejas y capaces de proporcionar un razonamiento completo.

En el mismo sentido, Jena provee tres implementaciones. Una de las implementaciones por defecto o “full”, otra es un razonador OWLMini el cual omite las vinculaciones hacia adelante (forward) respecto a las restricciones de minCardinality/someValuesFrom y la tercera implementación es un razonador OWLMicro que solo soporta RDFS mas varios axiomas de propiedad. Este último, omite las restricciones de cardinalidad para lograr un rendimiento mucho mayor.

A.2.3.2.4.4. Razonador Transitivo

Este razonador básico proporciona soporte para el almacenamiento y consulta de las jerarquías de clases y sus propiedades (sólo soporta propiedades transitivas y simétricas). Esta implementación es uno de los bloques más utilizados debido a su rendimiento ligeramente superior y su mayor eficiencia en el uso del espacio.

A.2.3.2.4.5. Razonador Genérico Basado en Reglas

Jena incluye para propósito general un razonador basado en reglas el cual es usado para implementar tanto el razonador RDFS y OWL, aunque también está disponible para uso general. Este razonador soporta inferencia basada en reglas sobre grafos RDF y proporciona el encadenamiento hacia adelante, hacia atrás e hibrido. El razonador basado en reglas tiene la opción de emplear los dos motores de reglas individuales de manera conjunta. Cuando se ejecuta en modo hibrido el flujo de datos es similar al que se ve en la figura A.8.

Inferencia de Relaciones entre Entidades de una Red Social en Línea

Anexo A

125 Figura A.8. Razonador basado en reglas en modo hibrido. (Fuente: adoptada de [77])

El motor para el encadenamiento hacia adelante (forward engine) guarda el conjunto de declaraciones inferidas en un almacén de deducciones. Las consultas realizadas son respondidas por medio del motor de encadenamiento hacia atrás LP, empleando la combinación de las reglas generadas y la unión de los datos puros y deducidos [50][88][77].

A.2.4. Almacenamiento y Consulta de Grafos

Para la selección de esta parte del sistema, se tiene una dependencia de la plataforma para Redes Sociales en Línea y el Framework para el Desarrollo de Aplicaciones Semánticas escogidos, ya que el almacenamiento y la consulta de los grafos se hacen desde las dos partes.