benefits | modules | events | modelling principles | test questions | performance | tools
Events
Events are the storytelling piece that binds the people, places and things together (much like the Force).
We model several aspects of an event:
- type
- time
- absolute
- relative
- location
- participants
Example
An extract of Escape_from_Death_Star:
Escape_from_Death_Star:
year 0
after The_Disaster
during Galactic_Civil_War
locatedIn Death_Star_1
participant C-3PO
participant R2-D2
types:
Escape
included some (
(deactivated some Tractor_Beam_Projector) and
(participant value Obi-Wan_Kenobi))
)
included some ( Killing and (of some (hadRole some StormTrooper)))
...
Event types
Type is a primary classification, represented by subclasses of Event. Examples include everything from epic Battles to a game of Dejarik.
Time
Absolute
We are only able to specify the year) in which events take place using BBY/ABY where negative integers are BBY.
Relative
Before/after
We link events together creating a timeline using before/after. There is a transitive sometimeBefore/sometimeAfter that allows for non-contiguous modelling and reasoning about the order in which things happen.
See sub-events below for events that happen during other events
During
We create named events if they are significant enough or we want to refer to them again and
then simply link them to the main event with during
.
eg Ahsoka_vs_Vader happened during Twilight_of_the_Apprentice
Included
We include the “parts” of an event in the description of the main event by adding subclasses
using restrictions on the included
property.
This almost gives us the starting point for building a DSL style of modelling:
Order_66 -> included some (Murder and (of value Aayla_Secura) and (locatedIn value Felucia))
Location
Locations can be very specific, at the level of a room, or as wide as a Planet.
Some are named. eg Aunt_Z’s_Tavern , Saleucami
Many locations mentioned in events are not modelled as individuals as there is no point in naming them:
locatedIn some ( Garbage_Compactor and (locatedIn value Death_Star_1)))
This uses the Class Garbage_Compactor qualified by its location.
Participants
Beings, ships (place) and the Force can all be involved in an event. In fact, the range of the participant property is:
Place or Object or Actor
There are also objects that are participants.
This is because events such as Sabotage
and Destruction use
of which is a subproperty of participant
.
See this ticket about use of “of”.
Participants may be property assertions referencing named individuals
Torture_of_Shmi participant Anakin_Skywalker
or, frequently, we want to specify a group of anonymous participants such as stormtroopers. We have to be remember that StormTrooper is a role, fulfilled by a person. The range of participant requires an Actor such as a Human which is why we see the common pattern:
included some (Killing and (of some (hadRole some StormTrooper)))
The following would be too specific - are all StormTroopers human?
included some (Killing and (of some (Human and hadRole some StormTrooper)))
Development
Also see development notes when we went through modelling options.