The PAL Language

A constraint (or a query) is a statement that holds on a certain number of variables, which each range over a particular set of values. Therefore, a constraint or query in PAL consists of a set of variable range definitions and a logical statement that must hold on those variables. The language of PAL is a limited predicate logic extension of Protégé-2000 that supports the definition of such ranges and statements. The syntax of PAL is a variant of the Knowledge Interchange Format (KIF): It supports KIF connectives but not all of KIF constants and predicates (e.g., the theory of arithmetic is much smaller). Statements like (defrelation) and (deffunction) are also omitted.

For instance, in the newspaper example, the constraint:

"The salary of an editor should be greater than the salary of any employee whom the editor is responsible for."

can be written in PAL as follows:

(defrange ?editor :FRAME Editor)
(defrange ?employee :FRAME Employee responsible_for)

(forall ?editor (forall ?employee
    (=> (and
        (responsible_for ?editor ?employee)
        (own-slot-not-null salary ?editor)
        (own-slot-not-null salary ?employee))
    (> (salary ?editor) (salary ?employee)))))


The PAL Language and Frames/The PAL Language

Next: Variable Range Definitions

PAL Table of Contents