The ObjectLogic language allows the user to formulate logic programs that represent knowledge about objects, their relationships and also about the classes they belong to. In addition to this factual knowledge, rules and queries can be modeled that represent implicit, intentional knowledge. The knowledge representation is based on the notion of terms and predicates as known from the logic-programming world.
Terms represent all of the different entities of an ObjectLogic program, i.e. objects, classes, methods and method values. Because all of these "first-class citizens" have names, we can query for them, which gives ObjectLogic the appeal and partially also the power of a second-order language.
Of course, a logic program must also make assertions about the objects. These assertions are made using logical predicates. Refer to the "Statements" section.