The Dialogue Game Execution Platform (DGEP)

Draft documentation for the Dialogue Game Execution Platform (DGEP) API.

  • /available returns a list of protocols corresponding to the DGDL+ files that are available within the system. For example, this service currently returns a list of nine games: {“dgdl”: [“RPD”, “CB”, “mm”, “IMPACT”, “TDG”, “DC”, “Prakken”, “PPD”, “Lorenzen”]}
  • /dialogue/new/<PROTOCOL> is used to initiate a dialogue according to a given protocol. When this occurs, DGEP communicates with the Argument Web to create a new NodeSet, which will later be used to store the nodes created in the course of this particular dialogue. DGEP also makes an entry in its own internal database at this stage, recording the protocol being used, the AIFdb NodeSetID and a dialogueID, that will be used for all future interactions in this dialogue.
  • /dialogue/<DIALOGUEID>/roles returns a list of the roles available in the dialogue. In this case DGEP’s internal database is also consulted to determine any roles which may already have been filled.
  • /dialogue/<DIALOGUEID>/join/<ROLE> allows for a new user joining a dialogue. The client application specifies the dialogueID for the dialogue that they are joining, and the role which they wish to have within the dialogue. DGEP again stores this information in its local database and generates a participantID that can then be used to retrieve the user’s available move list as well as to make a move.
  • /dialogue/<DIALOGUEID>/moves and /dialogue/<DIALOGUEID>/moves/<PARTICIPANTID> return available legal moves globally or for a specific participant.

    An example available move returned would be:
    "aif": "{\"locutions\": [], \"nodes\": [{\"text\": \"Britain should disarm\", \"type\": \"I\", \"nodeID\": 1}, {\"text\": \"$q\", \"type\": \"I\", \"nodeID\": 2}, {\"text\": \"YA\", \"scheme\": \"Asserting\", \"type\": \"YA\", \"nodeID\": 3}, {\"text\": \"L\", \"type\": \"L\", \"nodeID\": 4}, {\"text\": \"YA\", \"scheme\": \"Asserting\", \"type\": \"YA\", \"nodeID\": 5}, {\"text\": \"L\", \"type\": \"L\", \"nodeID\": 6}, {\"text\": \"DefaultConflict\", \"scheme\": \"DefaultConflict\", \"type\": \"CA\", \"nodeID\": 7}, {\"text\": \"YA\", \"scheme\": \"Contradicting\", \"type\": \"YA\", \"nodeID\": 8}, {\"text\": \"L\", \"type\": \"L\", \"nodeID\": 9}], \"edges\": [{\"to\": 1, \"from\": 3}, {\"to\": 3, \"from\": 4}, {\"to\": 2, \"from\": 5}, {\"to\": 5, \"from\": 6}, {\"to\": 7, \"from\": 2}, {\"to\": 1, \"from\": 7}, {\"to\": 7, \"from\": 8}, {\"to\": 8, \"from\": 9}]}",
    "reply": {
    "q": "$q",
    "p": "Britain should disarm"
    "opener": "I disagree with \"Britain should disarm\" because $q",
    "moveID": "DisagreeReason"

    Here ‘aif’ is a JSON-AIF representation of the AIF that would represent this move if it were to be made. This is generated by DGEP from the force and target information in the specification. This AIF structure is particularly useful in the case of an artificial participant determining what content to provide for a move based on the content of an existing AIF structure representing their beliefs. The ‘reply’ section is the JSON that the user will return, having replaced any variables ($LETTER) with the content they wish to provide. The opener and moveID are extracted directly from the specification. The moveID is used to make the move and the opener is provided only for the user’s information.

  • /dialogue/<DIALOGUEID>/interaction/MOVEID allows a participant to make a specifically identified legal move.
  • /dialogue/<DIALOGUEID>/transcript and /dialogue/<DIALOGUEID>/status can be used by an application to get a list of moves carried out so far and the current status of the dialogue (w.r.t. participant roles, termination and so on).

Example Usage

In order to have a dialogue, you will want to do roughly the following steps:

Create a new dialogue:
GET http://dgep.url/dialogue/new/PROTOCOL
You will get back a dialogue ID to use in the commands below.

Join the dialogue as in a role e.g.:
GET http://dgep.url/dialogue/DIALOGUEID/join/Initiator
This will give you the participant ID for the Initiator.

You can now get the move list:
GET http://dgep.url/dialogue/DIALOGUEID/moves
This will give you a list of moves that are available.

You will then need to do one of these moves, something like:
curl -i -X POST -d ‘{“speaker”:”INITIATORID”, “reply”:{“p”:”Britain should disarm”, “target”:PARTICIPANTID}}’ http://dgep.url/dialogue/DIALOGUEID/interaction/Question

The requested interaction will be performed, and the available move list updated.