@prefix dce: .
@prefix math: .
@prefix event: .
<> dce:title """Event time rules"""@en;
dce:creator """Hans Cools"""@en;
dce:contributor """Jos De Roo"""@en;
dce:publisher """Agfa Healthcare/Belgium"""@en;
dce:description """Rules to describe how 2 events relate in time."""@en;
dce:language """English"""@en.
# BEFORE/AFTER
{
?event1 event:begins ?begin1; event:ends ?end1. ?begin1 math:lessThan ?end1.
?event2 event:begins ?begin2; event:ends ?end2. ?begin2 math:lessThan ?end2.
?end1 math:notGreaterThan ?begin2.
}
=> {?event1 event:before ?event2. ?event2 event:after ?event1.}.
# STARTS BEFORE/STARTS AFTER
{
?event1 event:begins ?begin1; event:ends ?end1. ?begin1 math:lessThan ?end1.
?event2 event:begins ?begin2; event:ends ?end2. ?begin2 math:lessThan ?end2.
?begin1 math:lessThan ?begin2.
}
=> {?event1 event:startsBefore ?event2. ?event2 event:startsAfter ?event1.}.
# ENDS BEFORE/ENDS AFTER
{
?event1 event:begins ?begin1; event:ends ?end1. ?begin1 math:lessThan ?end1.
?event2 event:begins ?begin2; event:ends ?end2. ?begin2 math:lessThan ?end2.
?end1 math:lessThan ?end2.
}
=> {?event1 event:endsBefore ?event2. ?event2 event:endsAfter ?event1.}.
# DURING/INCLUDES
{
?event1 event:begins ?begin1; event:ends ?end1. ?begin1 math:lessThan ?end1.
?event2 event:begins ?begin2; event:ends ?end2. ?begin2 math:lessThan ?end2.
?begin2 math:greaterThan ?begin1. ?end2 math:notGreaterThan ?end1.
}
=> {?event2 event:during ?event1. ?event1 event:includes ?event2.}.
# OVERLAPS
{
?event1 event:begins ?begin1; event:ends ?end1. ?begin1 math:lessThan ?end1.
?event2 event:begins ?begin2; event:ends ?end2. ?begin2 math:lessThan ?end2.
?begin2 math:lessThan ?end1. ?begin1 math:lessThan ?begin2. ?end1 math:lessThan ?end2.
}
=> {?event1 event:overlaps ?event2.}.
# {?X a event:Event; event:begins ?XBT; event:ends ?XET. ?Y a event:Event; event:begins ?YBT; event:ends ?YET. ?XBT math:lessThan ?XET. ?YBT math:lessThan ?YET. ?XBT math:equalTo ?YBT.} => {?X event:sameStart ?Y.}.
# {?X a event:Event; event:begins ?XBT; event:ends ?XET. ?Y a event:Event; event:begins ?YBT; event:ends ?YET. ?XBT math:lessThan ?XET. ?YBT math:lessThan ?YET. ?XET math:equalTo ?YET.} => {?X event:sameEnd ?Y.}.
# {?X event:sameStart ?Y. ?X event:sameEnd ?Y.} => {?X event:sameTime ?Y.}.
# Due to rounding offs math:equalTo is not usable in these rules.
# To do: event:sameTime, event:sameStart, event:sameEnd to be declared using a date time and duration as accuracy setting, using e.g. event:sameDay, sameYear.
# Somehow the 'past broadening time scope' can be taken into account: the longer ago something happened, the broader the time description. E.g. a disease of 20 years ago will not be referred to as of a specific day or even in a month, but in the year X.