F-logic ( Frame Logic ) es un lenguaje de representación de conocimiento y ontología . Combina las ventajas del modelado conceptual con lenguajes orientados a objetos y basados en marcos , y ofrece una sintaxis declarativa , compacta y simple , y la semántica bien definida de un lenguaje de programación lógica .
Las características incluyen, entre otras, identidad de objetos, objetos complejos, herencia , polimorfismo , métodos de consulta y encapsulamiento . F-logic tiene la misma relación con la programación orientada a objetos que el cálculo relacional clásico con la programación de bases de datos relacionales .
Descripción general
F-logic fue desarrollado por Michael Kifer en la Universidad Stony Brook y Georg Lausen en la Universidad de Mannheim . F-logic fue desarrollado originalmente para bases de datos deductivas, pero ahora se usa con más frecuencia para tecnologías semánticas, especialmente la web semántica . F-logic se considera uno de los formalismos para ontologías , pero la lógica descriptiva (DL) es más popular y aceptada, al igual que el lenguaje de ontología web (OWL) basado en DL .
En el proyecto NeOn se desarrolló un entorno de desarrollo para F-logic, que también se utiliza en una variedad de aplicaciones para la integración de información, la respuesta a preguntas y la búsqueda semántica . Antes de la versión 4 del editor de ontologías Protégé, F-Logic se admitía como uno de los dos tipos de ontología.
La sintaxis de marco del Dialecto de Lógica Básica del Formato de Intercambio de Reglas (RIF BLD) estandarizado por el Consorcio World Wide Web se basa en la lógica F; sin embargo, RIF BLD omite las características de razonamiento no monótono de la lógica F. [1]
A diferencia del formalismo ontológico basado en la lógica descriptiva , la semántica de la lógica F es normalmente la de un supuesto de mundo cerrado en contraste con el supuesto de mundo abierto del DL . Además, la lógica F es generalmente indecidible , [ cita requerida ] mientras que la lógica descriptiva SHOIN en la que se basa el DL del Lenguaje de Ontología Web (OWL) es decidible. Sin embargo, es posible representar declaraciones más expresivas en la lógica F que las que son posibles con las lógicas descriptivas.
La descripción más completa de la lógica F se publicó en 1995. [2] El artículo preliminar [3] [4] de 1989 ganó el premio Test of Time Award de 1999 de ACM SIGMOD . [5] Un artículo de seguimiento [6] de 1992 ganó el premio Test of Time Award de 2002 de ACM SIGMOD. [5]
Sintaxis de F-logic
Las clases y los individuos pueden definirse en F-lógica de la siguiente manera:
hombre::persona. mujer::persona. brad:hombre. angelina:mujer.
Aquí se afirma que "los hombres y las mujeres son personas" y que "Brad es un hombre" y "Angelina es una mujer".
Las declaraciones sobre clases e individuos pueden hacerse de la siguiente manera:
persona[tieneHijo=>hombre].
brad[tieneHijo->{maddox,pax}].
casado(brad,angelina).
Esto define que "el hijo de una persona es un hombre", "Maddox y Pax son los hijos de Brad" y "Brad y Angelina están casados".
Además es posible representar axiomas en lógica F de la siguiente manera:
hombre ( X ) <- persona ( X ) Y NO mujer ( X ).
X :persona [ tienePadre-> Y ] <- Y :hombre [ tieneHijo -> X ].
Esto significa "X es un hombre si X es una persona pero no una mujer" y "si X es el hijo de Y entonces X es una persona e Y es el padre de X".
(Nota: la última inferencia no es fáctica, porque además de padres, los hijos también tienen madres. El género de X está determinado por la premisa, pero el género de Y no.)
El sistema Flora-2 introdujo una serie de cambios en la sintaxis de la lógica F, lo que la hizo más adecuada para un sistema de representación y razonamiento de conocimientos en lugar de una simple lógica teórica. En particular, las variables comenzaron a tener como prefijo un signo ?, se eliminó la distinción entre propiedades funcionales y multivaluadas y se la reemplazó por restricciones de cardinalidad, además de otros cambios importantes. Por ejemplo, el par de oraciones anteriores se ven así en Flora-2:
hombre ( ? X ) <- persona ( ? X ) \and \naf mujer ( ? X ).
? X :persona [ tienePadre-> ? Y ] <- ? Y :hombre [ tieneHijo -> ? X ].
Aquí \naf es la negación predeterminada ("naf" significa Negación como fracaso , basado en la semántica bien fundada ); Flora-2 también admite la llamada negación explícita, [7] que es más cercana a la negación en la lógica clásica.
Lenguajes basados en F-logic
- Flora-2 es una extensión de F-logic con HiLog , lógica de transacciones y razonamiento derrotable .
- Ergo es un sistema comercial basado en F-logic, que extiende Flora-2.
- PathLP es un lenguaje de programación lógica completo basado en F-logic.
- FLORID (F-LOgic Reasoning In Databases) es una implementación basada en C++
- Lenguaje de modelado de servicios web (WSML)
- Lenguaje de servicios web semántico (SWSL)
- El lenguaje ObjectLogic se basa en F-logic; OntoStudio es una implementación de ObjectLogic de semafora systems GmbH (anteriormente Ontoprise GmbH ).
- OO-logic es un sucesor de F-logic; SemReasoner y Ontology Management System (OSM) son implementaciones de OO-logic de adesso SE.
Referencias
- ^ Krötzsch, M. (octubre de 2010). Descripción Reglas lógicas. IOS Press. p. 10. ISBN 978-1-61499-342-1.
- ^ Kifer, M.; Lausen, G.; Wu, J. (julio de 1995). "Fundamentos lógicos de lenguajes orientados a objetos y basados en marcos". Revista de la ACM . 42 (4): 741– 843. doi :10.1145/210332.210335.
- ^ Kifer, M.; Lausen, G. (1 de junio de 1989). "F-logic: un lenguaje de orden superior para razonar sobre objetos, herencia y esquema". ACM SIGMOD Record . 18 (2): 134– 146. doi :10.1145/66926.66939.
- ^ Kifer, M.; Lausen, G. (1997). "F-logic: un lenguaje de orden superior para razonar sobre objetos, herencia y esquema (reeditado)". ACM SIGMOD Record . 18 (2): 134– 146. doi :10.1145/66926.66939.
- ^ ab "Premio SIGMOD Test of Time". sigmod.org . Consultado el 19 de marzo de 2019 .
- ^ Kifer, M.; Kim, W.; Sagiv, Y. (junio de 1992). "Consultas a bases de datos orientadas a objetos". ACM SIGMOD Record . 21 (2): 393– 402. doi :10.1145/141484.130342.
- ^ Alferes, José Júlio; Pereira, Luis Moniz; Przymusinski, Teodor C. (abril de 1998). "Negación 'clásica' en razonamiento no monótono y programación lógica". Journal of Automated Reasoning . 20 ( 1– 2): 107– 142. doi :10.1023/A:1005900924623. S2CID 8882426.