Documentation Index
Fetch the complete documentation index at: https://mintlify.com/arg-tech/xaif/llms.txt
Use this file to discover all available pages before exploring further.
The graph structure in xAIF is encoded through three cooperating arrays: edges (which connect nodes to one another), locutions (which attribute each L-node to a speaker), and participants (which define the speakers themselves). Together they form a chain that links a real-world person all the way through to a processed propositional statement in the argument graph.
Edges
Every directed connection between two nodes is represented as an entry in AIF.edges. An edge carries no semantic weight of its own — the meaning of the connection is determined by the type of the node it points to or from (see Node Types).
{
"edgeID": "123",
"fromID": "2",
"toID": "10"
}
| Field | Type | Description |
|---|
edgeID | int or string | Unique identifier for the edge within the graph. |
fromID | int or string | The nodeID of the source node. |
toID | int or string | The nodeID of the target node. |
Common edge patterns
The topology of an argument graph is built from three recurring two-edge patterns. In each case, a relation node is inserted between two content nodes, making the traversal direction explicit.
Illocutionary link — connects a raw locution to its proposition:
L-node ──► YA-node ──► I-node
Inference / Support — one proposition supports another:
I-node (antecedent) ──► RA-node ──► I-node (consequent)
Conflict / Attack — one proposition attacks another:
I-node (attacker) ──► CA-node ──► I-node (attacked)
Rephrase — one proposition paraphrases another:
I-node (source) ──► MA-node ──► I-node (target)
Discourse transition — one locution responds to or follows another:
L-node (predecessor) ──► TA-node ──► L-node (successor)
Locutions
The AIF.locutions array provides speaker attribution for L-nodes. Each entry maps one L-node to one participant by pairing their respective IDs.
{
"nodeID": "1265674",
"personID": "0",
"timestamp": "2023-10-11 15:34:32"
}
| Field | Type | Description |
|---|
nodeID | int or string | The nodeID of the L-node being attributed. Must match a node in AIF.nodes. |
personID | int or string | The participantID of the speaker. Must match a participant in AIF.participants. |
timestamp | string | Optional. The time the utterance was made, independent of processing time. |
A locution entry exists for every L-node that has a known speaker. In practice, every L-node in a dialogue graph will have a corresponding locution entry.
Participants
The AIF.participants array defines the speakers who appear in the dialogue. Each entry is a simple identity record.
{
"participantID": "12",
"firstname": "Sergiy",
"surname": "Zhadan"
}
| Field | Type | Description |
|---|
participantID | int or string | Unique identifier for the speaker. Referenced by locutions[].personID. |
firstname | string | First name of the speaker. Use "" if unknown. |
surname | string | Surname of the speaker. Use "" if unknown. |
The full attribution chain
The five structures — participants, locutions, L-nodes, YA-nodes, and I-nodes — form an unbroken chain from speaker identity to propositional content:
Participant (participantID: 0, "Speaker 1")
│
│ personID matches participantID
▼
Locution (personID: 0, nodeID: 0)
│
│ nodeID matches AIF.nodes entry
▼
L-node (nodeID: 0, type: "L", text: "the SNP has disagreements.")
│
│ edge: fromID 0 → toID 6
▼
YA-node (nodeID: 6, type: "YA", text: "Default Illocuting")
│
│ edge: fromID 6 → toID 5
▼
I-node (nodeID: 5, type: "I", text: "the SNP has disagreements.")
The AIF.get_speaker(node_id) method resolves this chain automatically. Pass it any L-node ID and it returns a (fullname, personID) tuple by joining locutions and participants in a single pass. If the node ID is not found in the locutions, it returns ("None None", "None").