Binary relations with element support
Change-Id: I2db566bf8f491119f2d431cef504c7a9a29f85ed
diff --git a/lib/KorAP/XML/Field/MultiTermTokenStream.pm b/lib/KorAP/XML/Field/MultiTermTokenStream.pm
index 0d8ae05..3b828d5 100644
--- a/lib/KorAP/XML/Field/MultiTermTokenStream.pm
+++ b/lib/KorAP/XML/Field/MultiTermTokenStream.pm
@@ -14,22 +14,48 @@
};
sub get_node {
- my ($self, $pos, $term) = @_;
- my $mtt = $self->pos($pos);
- my $node = $mtt->grep_mt($term);
+ my ($self, $unit, $term) = @_;
- # TODO: Check if term has PTI 128 - or what is wanted!
+ if ($unit->type eq 'token') {
+ my $mtt = $self->pos($unit->pos);
+ my $node = $mtt->grep_mt($term);
- # TODO: if the node has no TUI - add!
- return $node if $node;
+ # TODO: Check if term has PTI 128 - or what is wanted!
- my $tui = $self->tui($pos);
- return $mtt->add(
- term => $term,
- pti => 128,
- payload => '<s>' . $tui,
- tui => $tui
- );
+ # TODO: if the node has no TUI - add!
+ return $node if $node;
+
+ my $tui = $self->tui($unit->pos);
+ return $mtt->add(
+ term => $term,
+ pti => 128,
+ payload => '<s>' . $tui,
+ tui => $tui
+ );
+ }
+
+ # Is span
+ else {
+ my $mtt = $self->pos($unit->p_start);
+ my $node = $mtt->grep_mt('<>:' . $term);
+
+ # TODO: if the node has no TUI - add!
+ return $node if $node;
+
+ my $tui = $self->tui($unit->p_start);
+
+ return $mtt->add(
+ term => '<>:' . $term,
+ o_start => $unit->o_start,
+ o_end => $unit->o_end,
+ p_start => $unit->p_start,
+ p_end => $unit->p_end,
+ pti => 64,
+ payload => '<b>0<s>' . $tui,
+ tui => $tui
+ );
+
+ };
};
sub add_meta {