GOBO
view release on metacpan or search on metacpan
GOBO/Parsers/OBOParserDispatchHash.pm view on Meta::CPAN
$ud = new GOBO::ClassExpression::Union;
$args->{node}->union_definition($ud);
}
$ud->add_argument($u);
},
"transitive_over" => sub {
my ($self, $args) = @_;
my $rn = $args->{graph}->relation_noderef($args->{value});
$args->{node}->transitive_over($rn);
},
"holds_over_chain" => sub {
my ($self, $args) = @_;
# my @rels = map { $self->getnode($_,'r') } split(' ',$args->{value});
my @rels = map { $args->{graph}->relation_noderef($_) } split(' ',$args->{value});
$args->{node}->add_holds_over_chain(\@rels);
},
"equivalent_to_chain" => sub {
my ($self, $args) = @_;
# my @rels = map { $self->getnode($_,'r') } split(' ',$args->{value});
my @rels = map { $args->{graph}->relation_noderef($_) } split(' ',$args->{value});
$args->{node}->add_equivalent_to_chain(\@rels);
},
"is_" => sub {
my ($self, $args) = @_;
my $att = $args->{tag};
if ($args->{value} eq 'true')
{ $args->{node}->$att( 1 );
}
# TODO: check!
},
# following for annotation stanzas only
"subject" => sub {
my ($self, $args) = @_;
# $args->{node}->node($self->getnode($args->{value}));
$args->{node}->node($args->{graph}->noderef($args->{value}));
},
"relation" => sub {
my ($self, $args) = @_;
# $args->{node}->relation($self->getnode($args->{value},'r'));
$args->{node}->relation($args->{graph}->relation_noderef($args->{value}));
},
"object" => sub {
my ($self, $args) = @_;
# $args->{node}->target($self->getnode($args->{value}));
$args->{node}->target($args->{graph}->noderef($args->{value}));
},
"description" => sub {
my ($self, $args) = @_;
$args->{node}->description($args->{value});
},
"source" => sub {
my ($self, $args) = @_;
# $args->{node}->provenance($self->getnode($args->{value}));
$args->{node}->provenance($args->{graph}->noderef($args->{value}));
},
"assigned_by" => sub {
my ($self, $args) = @_;
# $args->{node}->source($self->getnode($args->{value}));
$args->{node}->source($args->{graph}->noderef($args->{value}));
},
"formula" => sub {
my ($self, $args) = @_;
my $vals = [];
_parse_vals($args->{value},$vals);
my $f = new GOBO::Formula(text=>$vals->[0],
language=>$vals->[1]);
$f->associated_with($args->{node});
$args->{graph}->add_formula($f);
},
};
my $header_subs = {
'subsetdef' => sub {
my ($self, $args) = @_;
# subsetdef: gosubset_prok "Prokaryotic GO subset"
if ($args->{value} =~ /^(\S+)\s+\"(.*)\"/)
{ my ($id,$label) = ($1,$2);
my $ss = new GOBO::Subset(id=>$id, label=>$label);
$args->{graph}->subset_index->{$id} = $ss;
}
else {
warn "Uh-oh... subset value " . $args->{value};
}
},
'date' => sub {
my ($self, $args) = @_;
$args->{graph}->date($args->{value});
},
'remark' => sub {
my ($self, $args) = @_;
$args->{graph}->comment($args->{value});
},
'data-version' => sub {
my ($self, $args) = @_;
$args->{graph}->version($args->{value});
},
'default' => sub {
my ($self, $args) = @_;
$args->{graph}->set_property_value($args->{tag},$args->{value});
},
'default-namespace' => sub {
my ($self, $args) = @_;
$self->default_namespace($args->{value});
},
'format-version' => sub {
my ($self, $args) = @_;
$self->format_version($args->{value});
},
};
override 'parse_header' => sub {
#sub parse_header {
my $self = shift;
my $g = $self->graph;
my $header_check = $self->get_header_check_sub;
$/ = "\n";
while($_ = $self->next_line) {
next unless /\S/;
if (/^\[/) {
$self->unshift_line($_);
last;
}
( run in 0.456 second using v1.01-cache-2.11-cpan-99c4e6809bf )