Compound Queries
Address:Goal::Parameters
- Address & Parameters Optional
- Value-returning Parameters
Composable Using Standard Prolog Operators
(locate(‘Adam Cheyer’, Where)::[strategy(query)],
notify(MsgRef, ‘Adam Cheyer’,
[at(Where), by(fax)])::[strategy(action)]),
Notes:
One of the most powerful features of OAA is the ability of a client agent (or a user) to submit compound goals to a facilitator. A compound goal is composed using operators similar to those employed by Prolog; that is, the comma for conjunction, the semicolon for disjunction, and the arrow for conditional execution. There are also several significant extensions to Prolog syntax and semantics. For example, there is a “parallel disjunction” operator that indicates the disjuncts are to be executed (by different agents) simultaneously.
Each subgoal of a compound goal can have an address and/or a set of parameters attached to it (both are optional). An address, if present, specifies one or more agents to handle the given goal, and may employ several different types of referring expressions: unique names, symbolic names, and shorthand names. We emphasize that the address associated with a goal or subgoal is always optional. When an address is not present, it is the facilitator's job to supply an appropriate address.