Example 5: Events

A football tournament -- participation, historical dependence, parthood, creation, termination, manifestation

gufo:Event gufo:isEventProperPartOf gufo:historicallyDependsOn gufo:participatedIn gufo:Participation gufo:wasCreatedIn gufo:wasTerminatedIn gufo:manifestedIn

What you'll learn

Everything in example 1 through example 4 endures: it persists through time and can change while remaining the same thing. gUFO's other basic category of concrete individual, gufo:Event, does not endure at all: an event is always something that has already occurred, with its beginning and end fixed once and for all -- there is no sense in which it is still unfolding or yet to happen. This example shows how such (already past) events relate back to the endurants (objects, aspects) they involve: who participated, what was created or destroyed, what aspect showed itself, and how events relate to each other in time and part-whole structure.

The domain

A football tournament: two semi-finals feeding into a final, an opening ceremony, three players, and a club that gets rebranded along the way. (Player and club names are fictional.)

Step by step

Events have parts, just like objects do

The semi-finals, the final and the opening ceremony are all sub-events of the tournament, related via gufo:isEventProperPartOf -- the event-side counterpart to gufo:isObjectProperPartOf from example 2, both sub-properties of the common gufo:isProperPartOf:

:SemiFinal1 a :SemiFinal ;
    gufo:isEventProperPartOf :WorldChampionship2026 .

:Final2026 a :Final ;
    gufo:isEventProperPartOf :WorldChampionship2026 .

Historical dependence: more than just "part of"

The final would not have happened, with these two finalists, without the semi-finals having taken place first -- but it is not part of them, nor they part of it (they are siblings under the tournament). gufo:historicallyDependsOn captures exactly this "could not have been without" relation, independent of parthood:

:Final2026 gufo:historicallyDependsOn :SemiFinal1 , :SemiFinal2 .

gUFO documents this property as covering causation but also weaker forms of dependence -- cases where an earlier event brings about a situation that contributes to, without being sufficient by itself to guarantee, a later event. (See example 6 for gufo:contributedToTrigger, which makes that weaker link explicit at the situation level.)

Participation, two ways

The direct way to say that a player took part in a match is a sub-property of gufo:participatedIn:

:participatedInMatch rdfs:subPropertyOf gufo:participatedIn ;
    rdfs:domain :Player ; rdfs:range :Match .

:AlexRivera :participatedInMatch :SemiFinal1 , :Final2026 .

This treats the participation as a bare fact about the player and the match, with no existence or properties of its own. But a participation can be more than that: it can itself have a beginning and an end narrower than the match's (a substitution), or bear its own qualities (minutes played). Whenever that is true of the domain being modeled, the participation is not just a fact to assert but an event in its own right, and gUFO offers gufo:Participation for it: a sub-class of gufo:Event (restricted to have exactly one object standing in gufo:participatedIn to it) that can be declared a part of the larger event:

:JordanLeeParticipationInFinal a gufo:Participation ;
    gufo:isEventProperPartOf :Final2026 .

:JordanLee :participatedInMatch :JordanLeeParticipationInFinal .

Both patterns are legitimate, and the choice is not arbitrary: use the direct property when the participation has no further properties or parts of its own worth representing; reify it as a gufo:Participation when it does. This example uses the direct pattern for Alex Rivera and Sam Okafor, and the reified pattern for Jordan Lee, purely to show both side by side.

An aspect manifesting itself in an event

Jordan Lee has a standing knee injury -- an intrinsic mode, in the sense of example 1's sibling example on aspects (see also example 3 for the related notion of quality). The injury exists independently of any one match, but it flares up -- manifests -- specifically during the first semi-final:

:KneeInjury rdfs:subClassOf gufo:IntrinsicMode .

:JordanLeeKneeInjury a :KneeInjury ;
    :hadKneeInjury :JordanLee ;
    gufo:manifestedIn :SemiFinal1 .

gufo:manifestedIn is what lets the ontology say "this aspect showed itself here" without conflating the aspect (which persists) with its manifestation (which is an event, and is over once the match ends).

Creation and termination in the same event

An endurant can come into existence, or cease to, in the course of an event -- and gUFO does not require the two to be different endurants or different events. Here, the host club is rebranded at the opening ceremony: the old organization is terminated and a new one created, in that very same event:

:RiverportUnitedFC a :Club ;
    gufo:wasTerminatedIn :OpeningCeremony2026 .

:RiverportCityFC a :Club ;
    gufo:wasCreatedIn :OpeningCeremony2026 .

Note that gufo:wasCreatedIn and gufo:wasTerminatedIn both take gufo:Endurant in their domain, not just gufo:Object: a relator (a marriage, an employment) can just as well be created or terminated in an event, as shown by the wedding example in the gUFO usage guide.

Going further: gUFO itself leaves wasCreatedIn/ wasTerminatedIn as bare assertions, with no further structure to the event beyond that. The gufoevents extension accounts for this in more detail: gufoevents:EndurantCreation and gufoevents:EndurantTermination are dedicated event subclasses whose axioms entail gufo:wasCreatedIn/gufo:wasTerminatedIn rather than requiring them to be asserted directly, and a same-event creation-plus-termination like the club rebranding above is exactly what gufoevents:Transmutation formalizes as a single complex event.

The full ontology

See ontology.ttl for the complete file.

How this is checked

cd examples/tests
.venv/bin/pytest -v -k 05-events