allen-relation-count | R Documentation |
iv_count_relates()
is similar to iv_count_overlaps()
, but it counts a
specific set of relations developed by James Allen in the paper:
Maintaining Knowledge about Temporal Intervals.
iv_count_relates( needles, haystack, ..., type, missing = "equals", no_match = 0L )
needles, haystack |
Interval vectors used for relation matching.
Prior to comparison, |
... |
These dots are for future extensions and must be empty. |
type |
The type of relationship to find. See the Allen's Interval Algebra section for a complete description of each type. One of:
|
missing |
Handling of missing intervals in
|
no_match |
Handling of
|
An integer vector the same size as needles
.
The interval algebra developed by James Allen serves as a basis and
inspiration for iv_locate_overlaps()
, iv_locate_precedes()
, and
iv_locate_follows()
. The original algebra is composed of 13 relations
which have the following properties:
Distinct: No pair of intervals can be related by more than one type
.
Exhaustive: All pairs of intervals are described by one of the type
s.
Qualitative: No numeric intervals are considered. The relationships are computed by purely qualitative means.
Take the notation that x
and y
represent two intervals. Now assume that
x
can be represented as [x_s, x_e)
, where x_s
is the start of the
interval and x_e
is the end of it. Additionally, assume that x_s < x_e
.
With this notation, the 13 relations are as follows:
Precedes:
x_e < y_s
Preceded-by:
x_s > y_e
Meets:
x_e == y_s
Met-by:
x_s == y_e
Overlaps:
(x_s < y_s) & (x_e > y_s) & (x_e < y_e)
Overlapped-by:
(x_e > y_e) & (x_s < y_e) & (x_s > y_s)
Starts:
(x_s == y_s) & (x_e < y_e)
Started-by:
(x_s == y_s) & (x_e > y_e)
Finishes:
(x_s > y_s) & (x_e == y_e)
Finished-by:
(x_s < y_s) & (x_e == y_e)
During:
(x_s > y_s) & (x_e < y_e)
Contains:
(x_s < y_s) & (x_e > y_e)
Equals:
(x_s == y_s) & (x_e == y_e)
Note that when missing = "equals"
, missing intervals will only match
the type = "equals"
relation. This ensures that the distinct property
of the algebra is maintained.
Note that some of the above relations are fairly restrictive. For example,
"overlaps"
only detects cases where x
straddles y_s
. It does not
consider the case where x
and y
are equal to be an overlap (as this
is "equals"
) nor does it consider when x
straddles y_e
to be an
overlap (as this is "overlapped-by"
). This makes the relations extremely
useful from a theoretical perspective, because they can be combined without
fear of duplicating relations, but they don't match our typical expectations
for what an "overlap" is.
iv_locate_overlaps()
, iv_locate_precedes()
, and iv_locate_follows()
use
more intuitive type
s that aren't distinct, but typically match your
expectations better. They can each be expressed in terms of Allen's
relations:
iv_locate_overlaps()
:
"any"
:
overlaps | overlapped-by | starts | started-by | finishes | finished-by | during | contains | equals
"contains"
:
contains | started-by | finished-by | equals
"within"
:
during | starts | finishes | equals
"starts"
:
starts | started-by | equals
"ends"
:
finishes | finished-by | equals
"equals"
:
equals
iv_locate_precedes()
:
precedes | meets
iv_locate_follows()
:
preceded-by | met-by
Locating relations from Allen's Interval Algebra
x <- iv(1, 3) y <- iv(3, 4) # `"precedes"` is strict, and doesn't let the endpoints match iv_count_relates(x, y, type = "precedes") # Since that is what `"meets"` represents iv_count_relates(x, y, type = "meets") # `"overlaps"` is a very specific type of overlap where an interval in # `needles` straddles the start of an interval in `haystack` x <- iv_pairs(c(1, 4), c(1, 3), c(0, 3), c(2, 5)) y <- iv(1, 4) # It doesn't match equality, or when the starts match, or when the end # of the interval in `haystack` is straddled instead iv_count_relates(x, y, type = "overlaps")
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.