This is revised version of civilian language
specification ver. 0.
The revised part is indicated by '*****'.
Shuji Morita
Kobe University
morita@octopus.cs.kobe-u.ac.jp
1 Scope
2 The outline of the conversation
2-1 The outline of the conversation
2-2 Ask for help
2-3 The understanding of the request
3 The outline of the grammar
3-1 Message Type
3-2 Action
3-3 ID
4 Grammar *****
5 Example *****
5-1 Example of inform
5-2 Example of ask for help
5-3 Example of request
The civilian's language should be able to
express real communication in the future.
But, this language isn't made to have the
expression beyond the necessity in the incumbent
grade. It is because I think that the effective
use of the communication becomes difficult.
I designed the language in Version 0 so that
the civilian could show it in the following.
(1) The civilian informs information on the
disaster to agent.
(2) The civilian ask agent for help.
(3) The civilian can understand a request.
An inhabitant informs a nearby agent of the information on the disaster by using the say command. When a place is expressed with coordinates, it includes a +-30m error.
When he is filled up, a civilian asks help like an example (7) or (8). It is only "help" that is used as "action".
The civilian makes it the candidate of the behavior when the request is given to it as the grammar. At this time, a request sentence doesn't necessarily need to have an argument to the action.
inform It means that the proposition of the
content is true.
request It means requesting action of the
content.
cancel It means canceling action of the content.
not-understood It means that an agent cannot
understand the content.
Each action and the relations of the parameter
are as the following.
ActionObject Source Goal Time Place
move no from to when no
say " " no no when where
tell " " no no when where
rescue object from no when where
open object @no no@@ when where
extinguish object no no when where
carry object from to when where
help no no no no no
When ID isn't clear, it is described like a "T number". Each one gives a number to the option for the distinction.
ACLCommunicativeAct = Message
Message = "(" MessageType MessageParameter*
")"
MessageType = "inform"
| "request"
| "cancel"
| "not-understood"
MessageParameter = ":sender" Agent
| ":receiver" Agent
*****
| ":content" Content
Agents = "(" "set" Agent+
")"
Content = "(" ContentExpression+
")"
ContentExpression = ActionExpression
| Proposition
Proposition = Wff
Wff = AtomicFormula
| "(" ActionOp agent ActionExpression
")"
*****
ActionOp = "done"
AtomicFormula = Property
| "(" "state" Object
State ")"
| "true"
| "false"
Property = "(" "type"
Object ObjectType ")"
ActionExpression = "(" "action"
Action [time] [place] ")"
*****
Agent = "(" "agent" ID
")"
| "(" "set" agent+ ")"
*****
Object = Agent
| "(" ObjectKindA ID ")"
| "(" ObjectKindB ID ID ")"
| "(" "set" Object+ ")"
State = "(" StateName [degree]
")"
*****
Action = "(" ActionName [ ActionObject
]
[ Source ]
[ Goal ] ")"
ActionObject = "(" "object"
Object ")"
| ACLComunicativeAct
Source = "(" "source"
Object ")"
| "(" "source" Place
")"
Goal = "(" "goal" Object
")"
| "(" "goal" Place ")"
Time = "(" "time" Integer
")"
Place = "(" "Place" Object
")"
| "(" "Place" "("
"position" Integer Integer ")"
Degree = "(" "Degree"
Integer ")"
State = "be"
| "buried"
| "damage"
| "blocked"
| "fire"
| "broken"
Action = "move"
| "say"
| "tell"
| "rescue"
| "open"
| "extinguish"
| "carry"
| "help"
ObjectKindA = "agent"
| "building"
| "node"
| "rivernode"
ObjectKindB = "river"
| "road"
ObjectType = "Civilian"
| "Car"
| "FireBrigade"
| "AmbulanceTerm"
| "PoliceForce"
| "FireStation"
| "AmbulanceCenter"
| "PoliceOffice"
| "Refuge"
ID = ["T"]? Integer
Integer = Sign? DecimalLiteral+
Sign = [ "+" , "-" ]
DecimalLiteral = ["0" - "9"]
All examples are remarks to agent of ID200 from agent of ID100.
(1) The agent of ID150 is buries the building
of ID250.
(inform :sender (agent 100)
:receiver (agent 200)
:content ((state (agent 150) (buried) (place
(building 250)))))
(2) Someone is buried in the coordinate (100,200).
(inform :sender (agent 100)
:receiver (agent 200)
:content ((state (agent T1) (buried) (place
(position 100 200)))))
(3) The building of ID300 is fire.
(inform :sender (agent 100)
:receiver (agent 200)
:content ((state (building 300) (fire))))
(4) The building of coordinate (100,200)
is fire.
(inform :sender (agent 100)
:receiver (agent 200)
:content ((state (building T1)
(fire (degree 100)) (place (position 100
200)))))
)
(5) The building of ID150 has broken at the
time of 15. (the degree is 50.)
(inform :sender (agent 100)
:receiver (agent 200)
:content ((state (building 150)
(broken (degree 50)) (time 15))))
(6) The road of coordinate (100,200) is blocked.
( inform :sender (agent 100)
:receiver (agent 200)
:content ((state (road T1 T2)
(blocked) (place (position 100 200)))))
(7) The road to ID150 from ID250 is blocked.
(The degree is 50)
(inform :sender (agent 100)
:receiver (agent 200)
:content ((state (road 150 250)
(blocked (degree 50)))))
(8) Help.
(request :sender (agent 100)
:receiver (agent 200)
:content ((action (help))))
(9) Help. (Say to un-specific many)
(request :sender (agent 100)
:receiver (agent T1)
:content ((action (help))))
(10) Move to the building of ID 150. (Say
to agent of ID 200 and agent of ID 300j
(request :sender (agent 100)
:receiver (set (agent 200) (agent 300))
:content ((action (move (goal (building 150))))))
(11) Move.
(request :sender (agent 100)
:receiver (set (agent 200) (agent 300))
:content ((action (move) )))
(12) Carry agent of ID 300 to building of
ID 150.
(request :sender (agent 100)
:receiver (agent 200)
:content ((action (carry (agent 300) (goal
(building 150))))))
(13) Say "Move." to agent of ID
300.
(request :sender (agent 100)
:receiver (agent 200)
:content ((action
(say ((request :receiver (agent 300)
:content ((action (move)))))))))