F-logic (Frame logic) is a knowledge representation and ontology language. It combines the advantages of conceptual modeling with object-oriented, frame-based languages, and offers a declarative, compact and simple syntax, and the well-defined semantics of a logic programming language.

Features include, among others, object identity, complex objects, inheritance, polymorphism, query methods, encapsulation. F-logic stands in the same relationship to object-oriented programming as classical relational calculus stands to relational database programming.

Overview

edit

F-logic was developed by Michael Kifer at Stony Brook University and Georg Lausen at the University of Mannheim. F-logic was originally developed for deductive databases, but is now used most often for semantic technologies, especially the semantic web. F-logic is considered as one of the formalisms for ontologies, but description logic (DL) is more popular and accepted, as is the DL-based Web Ontology Language (OWL).

A development environment for F-logic was developed in the NeOn project and is also used in a range of applications for information integration, question answering and semantic search. Before version 4 of Protégé ontology editor, F-Logic is supported as one of the two kinds of ontology.

The frame syntax of the Rule Interchange Format Basic Logic Dialect (RIF BLD) standardized by the World Wide Web Consortium is based on F-logic; RIF BLD however omits non-monotonic reasoning features of F-logic.[1]

In contrast to description logic based ontology formalism, the semantics of F-logic are normally that of a closed world assumption in contrast to DL's open world assumption. Also, F-logic is generally undecidable,[citation needed] whereas the SHOIN description logic that Web Ontology Language (OWL) DL is based on is decidable. However, it is possible to represent more expressive statements in F-logic than are possible with description logics.

The most comprehensive description of F-logic was published in 1995.[2] The preliminary paper[3][4] from 1989 won the 1999 Test of Time Award from ACM SIGMOD.[5] A follow-up paper[6] from 1992 won the 2002 Test of Time Award from ACM SIGMOD.[5]

F-logic syntax

edit

Classes and individuals may be defined in F-logic as follows:

man::person.
woman::person.
brad:man.
angelina:woman.

This states, that "men and women are persons" and that "Brad is a man", and "Angelina is a woman".

Statements about classes and individuals may be made as follows:

person[hasSon=>man].
brad[hasSon->{maddox,pax}].
married(brad,angelina).

This defines that "the son of a person is a man", "Maddox and Pax are the sons of Brad" and "Brad and Angelina are married".

In addition it is possible to represent axioms in F-logic in the following manner:

 man(X) <- person(X) AND NOT woman(X).
 X:person[hasFather->Y] <- Y:man[hasSon -> X].

These mean "X is a man if X is a person but not a woman" and "if X is the son of Y then X is a person and Y is the father of X".

(Note: the latter inference is not factual, because in addition to fathers, sons also have mothers. The gender of X is determined by the premise, but the gender of Y is not.)

The Flora-2 system introduced a number of changes to the syntax of F-logic, making it more suitable for a knowledge representation and reasoning system as opposed to just a theoretical logic. In particular, variables became prefixed with a ?-mark, the distinction between functional and multi-valued properties was dropped and replaced by cardinality constraints, plus other important changes. For instance, the above pair of sentences look like this in Flora-2:

 man(?X) <- person(?X) \and \naf woman(?X).
 ?X:person[hasFather->?Y] <- ?Y:man[hasSon -> ?X].

Here \naf is default negation ("naf" stands for Negation as failure, based on the well-founded semantics); Flora-2 also supports so-called explicit negation,[7] which is closer to negation in classical logic.

F-logic based languages

edit

References

edit
  1. ^ Krötzsch, M. (October 2010). Description Logic Rules. IOS Press. p. 10. ISBN 978-1-61499-342-1.
  2. ^ Kifer, M.; Lausen, G.; Wu, J. (July 1995). "Logical foundations of object-oriented and frame-based languages". Journal of the ACM. 42 (4): 741–843. doi:10.1145/210332.210335.
  3. ^ Kifer, M.; Lausen, G. (1 June 1989). "F-logic: a higher-order language for reasoning about objects, inheritance, and scheme". ACM SIGMOD Record. 18 (2): 134–146. doi:10.1145/66926.66939.
  4. ^ Kifer, M.; Lausen, G. (1997). "F-logic: a higher-order language for reasoning about objects, inheritance, and scheme (re-issued)". ACM SIGMOD Record. 18 (2): 134–146. doi:10.1145/66926.66939.
  5. ^ a b "SIGMOD Test of Time Award". sigmod.org. Retrieved 2019-03-19.
  6. ^ Kifer, M.; Kim, W.; Sagiv, Y. (June 1992). "Querying object-oriented databases". ACM SIGMOD Record. 21 (2): 393–402. doi:10.1145/141484.130342.
  7. ^ Alferes, José Júlio; Pereira, Luís Moniz; Przymusinski, Teodor C. (April 1998). "'Classical' negation in nonmonotonic reasoning and logic programming". Journal of Automated Reasoning. 20 (1–2): 107–142. doi:10.1023/A:1005900924623. S2CID 8882426.