<На страницу назад | На страницу вперед>
А.5.4 Основные временные отношения
В данном разделе приводятся некоторые базовые временные отношения между интервалами.
Единственным примитивным отношением, необходимым для характеристики временных
интервалов, используемых в IDEF3, является отношение "соединяется"
(meets), которое может быть истинным только для интервалов, как показывает следующее
неполное определение.
(define-relation meets (?x ?y)
:=> (and (interval ?x) (interval ?y)))
Как уже отмечалось, интуитивно можно сказать, что один временной интервал соединяется с другим интервалом только в том случае, если конечная точка первого интервала идентична начальной точке второго интервала. При этом для отношения "соединяется" (meets) допускается логика, приведенная в работе (Allen & Hayes, 1987) [см. также (van Bentham, 1983)].
Посредством "соединяется" (meets) можно определить множество полезных временных отношений. Первым отношением является "сильное предшествование" (strongly-precedes), когда один интервал характеризуется сильным предшествованием по отношению к другому интервалу только в том случае, если первый интервал соединяется с некоторым интервалом, который соединяется со вторым интервалом.
(define-relation strongly-precedes (?x ?y)
:= (exists (?z ?w : (/= ?z ?w)) (and (meets ?x ?z) (meets ?z ?w) (meets ?w ?y))))
Обратите внимание: поскольку точки является интервалами, между ?х и ?y необходимо ввести два раздельных интервала. Фактически точку можно определить как интервал, который соединяется сам с собой (это дивергенция из работы Allen & Hayes).
(define-relation point (?x)
:= (meets ?x ?x))
Один временной интервал i "начинает" (starts) другой интервал j только в том случае, если оба интервала соединяются с данным интервалом, но j соединяется с некоторым интервалом, который соединяется с некоторым интервалом, с которым соединяется i:
(define-relation starts (?x ?y)
:= (exists ?z (and (meets ?z ?x) (meets ?z ?y)
(exists ?w (and (meets ?y ?w) (strongly-precedes ?x ?w)))))
Подобным образом, временной интервал i "заканчивает" (finishes) другой интервал j только в том случае, если оба интервала соединяются с данным интервалом, но i соединяется с некоторым интервалом, который начинает интервал j:
(define-relation finishes (?x ?y)
:= (exists (?z ?w : (starts ?w ?y)) (and (meets ?x ?z) (meets ?y ?z) (meets ?w ?x))))
Интервал i "совмещается" (overlaps) с интервалом j только в том случае, если некоторый интервал, который заканчивает i, начинает интервал j:
(define-relation overlaps (?x ?y)
:= (exists ?z (and (finishes ?z ?x) (starts ?z ?y))))
Интервал i устанавливается "в течение" (during) интервала j только в том случае, если некоторый интервал, который начинает интервал j, соединяется с интервалом i, а интервал i соединяется с некоторым интервалом, который заканчивает интервал j:
(define-relation during (?x ?y)
:= (exists (?z ?w) (and (starts ?z ?y) (meets ?z ?x) (finishes ?w ?y) (meets ?x ?w)))
Подобным образом можно определить другие полезные отношения.