ProcessLink EPL messages are based on KQML but with extended performatives and a restrictive format for the message content consisting of field name and value pairs specific to the defined performatives. BNF is used but special symbols for repetition are avoided for readability. Strings are not case-sensitive.
KQML-PL-EPLMessage := "(" <performative> <mandatory>
<otherfields> <content> ")"
performative := <string>
mandatory := ":" "Sender" <name> ":" "Reciever" <name>
":" "Language" "ProcessLink-EPL"
otherfields := ":" <name> <value> | ":" <name> <value>
<otherfields> | NIL
content := ":" "Content" "(" <content_fields> ")"
content_fields := <name> "|" <value> "&" <content_fields> |
<name> "|" <value> "&" | NIL
value := <string> | "(" <string> <value> ")"
name := <string>
string := ASCII string
Within a <field-value>, ProcessLink messages will use quotes to define single strings that include spaces. Otherwise, spaces will denote separate tokens in parsing.
This is the general form of a KQML message understood by ProcessLink-compliant agents and defines the ProclessLink general message syntax. If the <name> of an <otherfield> is "Ontology", then the <value> should be a <string> with a valid URL pointing to an ontology explaining terms in the content fields.
( Trace
:sender PM
:receiver Redux
:language ProcessLink
:content { Variable |
"duration" "task-1" &
)