# The basicplan pattern in use: a two-day alpine traverse, planned and then walked. The plan
# is held in mind by the trip leader and sets a task; the written itinerary is satisfied by
# the situation that records how the traverse actually went; and that situation gathers the
# ascent, the leader, the party's tent and the altitude reached. The altitude region is
# parametrized by the itinerary's maximum-altitude parameter.

@prefix agentrole: <http://www.ontologydesignpatterns.org/cp/owl/agentrole.owl#> .
@prefix basicplan: <http://www.ontologydesignpatterns.org/cp/owl/basicplan.owl#> .
@prefix basicplandescription: <http://www.ontologydesignpatterns.org/cp/owl/basicplandescription.owl#> .
@prefix basicplanexecution: <http://www.ontologydesignpatterns.org/cp/owl/basicplanexecution.owl#> .
@prefix classification: <http://www.ontologydesignpatterns.org/cp/owl/classification.owl#> .
@prefix description: <http://www.ontologydesignpatterns.org/cp/owl/description.owl#> .
@prefix objectrole: <http://www.ontologydesignpatterns.org/cp/owl/objectrole.owl#> .
@prefix parameter: <http://www.ontologydesignpatterns.org/cp/owl/parameter.owl#> .
@prefix participation: <http://www.ontologydesignpatterns.org/cp/owl/participation.owl#> .
@prefix region: <http://www.ontologydesignpatterns.org/cp/owl/region.owl#> .
@prefix situation: <http://www.ontologydesignpatterns.org/cp/owl/situation.owl#> .
@prefix taskrole: <http://www.ontologydesignpatterns.org/cp/owl/taskrole.owl#> .
@prefix ex: <https://w3id.org/ontoboard/example/basicplan#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

ex:TraversePlan a owl:NamedIndividual , basicplandescription:Plan ;
    rdfs:label "the plan for the two-day Gotthard traverse" .

ex:MarcoBernasconi a owl:NamedIndividual , agentrole:Agent , basicplanexecution:Agent ;
    rdfs:label "Marco Bernasconi, the trip leader" ;
    basicplan:conceptualizes ex:TraversePlan .

ex:ReachHutBeforeDusk a owl:NamedIndividual , taskrole:Task ;
    rdfs:label "reach the Rotondo hut before dusk on day one" .

ex:AscentToRotondoHut a owl:NamedIndividual , basicplanexecution:Action ;
    rdfs:label "the ascent from Realp to the Rotondo hut, 12 July 2026" ;
    basicplan:executesTask ex:ReachHutBeforeDusk ;
    basicplanexecution:actionHasParticipant ex:GroupTent .

ex:ClubItinerary a owl:NamedIndividual , description:Description ;
    rdfs:label "the club's written itinerary for the traverse" ;
    basicplan:isSatisfiedBy ex:TraverseAsItHappened .

ex:TraverseAsItHappened a owl:NamedIndividual , situation:Situation ;
    rdfs:label "how the traverse actually went, 12 to 13 July 2026" ;
    basicplanexecution:includesAction ex:AscentToRotondoHut ;
    basicplanexecution:includesAgent ex:MarcoBernasconi ;
    basicplanexecution:includesObject ex:GroupTent ;
    basicplanexecution:includesRegion ex:PassAltitude ;
    situation:isSettingFor ex:RotondoHut .

ex:GroupTent a owl:NamedIndividual , objectrole:Object , participation:Object ;
    rdfs:label "the party's four-person tent" ;
    objectrole:hasRole ex:ShelterRole ;
    participation:isParticipantIn ex:OvernightCamp .

ex:ShelterRole a owl:NamedIndividual , objectrole:Role ;
    rdfs:label "shelter for the night" .

ex:OvernightCamp a owl:NamedIndividual , participation:Event ;
    rdfs:label "the overnight stop by Lake Sella" ;
    participation:hasParticipant ex:GroupTent .

ex:PassAltitude a owl:NamedIndividual , region:Region ;
    rdfs:label "2934 m above sea level, the altitude of the pass crossing" ;
    basicplan:isParametrizedBy ex:MaximumAltitude ;
    region:hasRegionDataValue "2934" .

ex:MaximumAltitude a owl:NamedIndividual , parameter:Parameter ;
    rdfs:label "the itinerary's maximum altitude" .

ex:RotondoHut a owl:NamedIndividual , classification:Entity , situation:Entity ;
    rdfs:label "the Rotondo hut, 2571 m" ;
    classification:isClassifiedBy ex:MountainHut ;
    situation:hasSetting ex:TraverseAsItHappened .

ex:MountainHut a owl:NamedIndividual , classification:Concept ;
    rdfs:label "mountain hut" ;
    classification:classifies ex:RotondoHut .

# Only one direction of each inverse pair is asserted: actionHasParticipant/isParticipantInAction, conceptualizes/isConceptualizedBy, executesTask/isExecutedIn, hasRegion/isRegionFor, hasRole/isRoleOf, includesAction/isActionIncludedIn, includesAgent/isAgentIncludedIn, includesObject/isObjectIncludedIn, includesRegion/isRegionIncludedIn, isParametrizedBy/parametrizes, isSatisfiedBy/satisfies. A reasoner adds the other.
