Abstract Variables

Where can I find a list of internal commands?
Some functionality of Ariadne can be accessed by internal commands. internal://dialogue/say is one example of them. You can find the list of internal commands in the file ariadne/src/ard/mgr/InternalProtocol. By looking at that file, you should be able to figure out how you can add additional functionality which is not provided right now.


What is the variable intention?
The variable intention measures the degree to which the intention of the user has been determined. If the variable takes the value selected, it means that several dialogue goals are selected; representing the possible intention of the user. The value determined means that there is only one goal that represents the intention of the user, but there is still information missing to execute the bindings associated with this goal. Finally, the value finalizedmeans that one goal with all its fillers has been determined as the users' intention. You can read more about variables in the ICSLP 2000 papers that can be downloaded from here.

What are the other variables?
All variables, together with the values they can take, are printed out at startup. In general, variables serve to characterize the dialogue state and extract certain abstract attributes from the dialogue, such as overall dialogue quality, or intention (explained above). You can read more about variables in the ICSLP 2000 papers that can be downloaded from here.

Can I add my own variables?
Yes, you certainly can. Have a look at ext/src/ardtype_example/types. This code defines the types of the variables. A type is defined by (1) the kinds of values a variable can take and (2) the way the value is calculated. Copy the code you find there, modify it according to your needs and make sure your new type is exported by the dll (see ext/src/ardtype_example/library/Library.cpp how this is done. Then, add a variable with your newly sdefined type to the config file. Finally, add an ads.update() statement to the java script that is referenced in the config file. The java script ads.update() statement will forward the execution to the update method defined in your type.

What are possible values for variables (ie, determined)?
The values a variable can take are defined in the type of the variable. You can find out about them by looking at the source code in ext/src/ardtype_std/variables/*.cpp. Also, all variables, their types and the values the variables can take are printed out at startup.


What is the syntax for referencing/comparing/altering variables/paths (ie '=', '>', 'is' etc.)

Paths

What is the formal definition of a path?
A path is asequence of features concatenated using the bar |. The features are the members of the classes defined in the ontology part of the file.


What possible paths exist?
Possible paths are possible combinations of features as defined in the ontology. Ariadne does type checking when constructing path objects, so if features are combined that do not fulfill the type constraints imposed by the classes in the ontology, an error message is printed.

Bindings

What are bindings?
Bindings allow an application developer to execute procedures in the application or services in the dialogue manager, such as internal://dialogue/say.


Does the order of bindings matter?
The bindings are executed in the order they are specified. However, text-to-speech is executed asynchronously which means that a binding following a say command may be executed before the say command has finished speaking.


Can I define my own bindings?
Yes you certainly can. This is an easy way to have Ariadne execute native code inside your application. Have a look at ext/src/arditf_cpp to see how the C++ part is done. The corresponding adl file is found in data/tutorial/step11. If you are using Java, see the java source code how to incorporate your own functionality. java/edu/cmu/cs/is/step02/Step02Package.java would be a good place to start.

ADL Files

What is an adl file?
An adl file is a specification of a part of a dialogue application.

What is generic, generic:yes, base:bot and answer.xml?
generic refers to the generic.adl file. In principle, strings of the form ns:id refer an identifier id in namespace ns which is defined in ns.adl.

What does the '->' symbol mean and how/when is it used?
The symbol '->' separates the precondition from the consequence in a dialogue object, such as a move, goal or database.

What is $sem, what is $past and what does the '$' symbol mean?
In addition to abstract variables described above, Ariadne supports concrete variables. Concrete variables hild representations as created by the parser. For example, $sem refers to the semantic representation of the current utterance.

Concerning move ConfirmDoSomething on variable Intention changed to finalized: What is the name of the move and what does the word "on" or "changed to" mean?
The name of the move is ConfirmDoSomething. The preconditions of this move are evaluated whenever the value of the variable intention changes such that the new value is finalized. You can specify a complete transition by saying move ConfirmDoSomething on variable Intention changed from determined to finalized