# A jet engine that is part of one airframe for a while and of another afterwards. The
# part-of claim is reified as a situation, so each fitting carries its own time interval.

@prefix situation: <http://www.ontologydesignpatterns.org/cp/owl/situation.owl#> .
@prefix timeindexedpartof: <http://www.ontologydesignpatterns.org/cp/owl/timeindexedpartof.owl#> .
@prefix timeindexedsituation: <http://www.ontologydesignpatterns.org/cp/owl/timeindexedsituation.owl#> .
@prefix timeinterval: <http://www.ontologydesignpatterns.org/cp/owl/timeinterval.owl#> .
@prefix ex: <https://w3id.org/ontoboard/example/timeindexedpartof#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .

ex:EngineESN71432 a owl:NamedIndividual , timeindexedpartof:Object , situation:Entity ;
    rdfs:label "CFM56-5B engine, serial number ESN 71432" ;
    timeindexedpartof:includesPartObject ex:EngineOnDAIZK , ex:EngineOnDAIPX ;
    situation:hasSetting ex:ShopVisitJune2021 .

ex:AirframeDAIZK a owl:NamedIndividual , timeindexedpartof:Object , situation:Entity ;
    rdfs:label "Airbus A320 airframe D-AIZK" ;
    timeindexedpartof:includesWholeObject ex:EngineOnDAIZK .

ex:AirframeDAIPX a owl:NamedIndividual , timeindexedpartof:Object , situation:Entity ;
    rdfs:label "Airbus A320 airframe D-AIPX" ;
    timeindexedpartof:includesWholeObject ex:EngineOnDAIPX .

ex:EngineOnDAIZK a owl:NamedIndividual , timeindexedpartof:TimeIndexedPartOf ,
        timeindexedsituation:TimeIndexedSituation ;
    rdfs:label "engine ESN 71432 fitted to airframe D-AIZK" ;
    timeindexedsituation:atTime ex:March2019ToJune2021 .

ex:EngineOnDAIPX a owl:NamedIndividual , timeindexedpartof:TimeIndexedPartOf ,
        timeindexedsituation:TimeIndexedSituation ;
    rdfs:label "engine ESN 71432 fitted to airframe D-AIPX" ;
    timeindexedsituation:atTime ex:August2021ToMay2024 .

ex:March2019ToJune2021 a owl:NamedIndividual , timeinterval:TimeInterval ;
    rdfs:label "14 March 2019 to 2 June 2021" ;
    timeinterval:hasIntervalDate "2019-03-14/2021-06-02" ;
    timeinterval:hasIntervalStartDate "2019-03-14" ;
    timeinterval:hasIntervalEndDate "2021-06-02" .

ex:August2021ToMay2024 a owl:NamedIndividual , timeinterval:TimeInterval ;
    rdfs:label "9 August 2021 to 28 May 2024" ;
    timeinterval:hasIntervalDate "2021-08-09/2024-05-28" ;
    timeinterval:hasIntervalStartDate "2021-08-09" ;
    timeinterval:hasIntervalEndDate "2024-05-28" .

ex:ShopVisitJune2021 a owl:NamedIndividual , situation:Situation ;
    rdfs:label "the June 2021 shop visit at which the engine was removed" ;
    situation:isSettingFor ex:AirframeDAIZK .

# Only one direction of each inverse pair is asserted: atTime/isTimeIndexFor, forEntity/hasTimeIndexedSetting, hasPart/isPartOf, includesPartObject/isPartObjectOf, includesWholeObject/isWholeObjectOf. A reasoner adds the other.
