I-Q, an I-X Query agent. This is a utility agent used to provide an I-X interface to an information source, such as a database or another agent. Here is a typical situation.

If there's an I-X agent, P ("P" because it's usually an I-P2 panel), that wants to get information from some non-IX agent, A, we use a little I-X agent, call it Q (for "query") that sits between P and A, like this:

       P  <-- [I-X comms] --> Q <-- [whatever A speaks] --> A

A request for information is an activity that has a pattern that begins with a verb, V, such as "lookup-hospitals" or "find-resources". P is told that Q has the verb-capability V.

Then if P is given an activity whose pattern begins with V, there will be an "invoke" action for that activity that, if selected by the user, forwards the activity to Q. Q then does whatever it does to get the relevant information from A and sends it back as reports to P.

Of course, Q doesn't have to ask another agent; Q might find the information itself. A common case is for Q to ask A if A is available and otherwise to simulate the lookup itself.

Q doesn't have to be an I-Q (it might be some other kind of agent); but the classes in this package make it easier to write simple agents for such tasks.